WinFormTools/WinformDevFramework/System/FrmDataSource.cs

300 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SqlSugar;
using WinformDevFramework.Core.Winform;
using WinformDevFramework.IServices.System;
using WinformDevFramework.Models;
using WinformDevFramework.Models.DBModels;
using WinformDevFramework.Services.System;
using DbType = SqlSugar.DbType;
namespace WinformDevFramework
{
public partial class FrmDataSource : BaseForm1
{
private ISysDataSourceServices _dataSourceServices;
public FrmDataSource(ISysDataSourceServices sysDataSourceServices)
{
_dataSourceServices = sysDataSourceServices;
InitializeComponent();
}
public override void Init()
{
base.Init();
//初始化 数据列表 列名称
this.dataGridViewList.DataSource = GetAllDataSources();
this.dataGridViewList.Columns["ConnectName"]!.HeaderText = "连接名";
this.dataGridViewList.Columns["Host"]!.HeaderText = "主机";
this.dataGridViewList.Columns["DataBaseName"]!.HeaderText = "数据库";
this.dataGridViewList.Columns["Username"]!.HeaderText = "用户名";
this.dataGridViewList.Columns["Password"].Visible = false;
SetToolButtonStatus(formStatus);
SetToolsButton();
}
public override void TabControlSelectingFunction(object? sender, TabControlCancelEventArgs e)
{
base.TabControlSelectingFunction(sender, e);
}
public override void DataGridViewListDoubleClick(object? sender, DataGridViewCellEventArgs e)
{
base.DataGridViewListDoubleClick(sender, e);
base.DataGridViewListDoubleClick(sender, e);
var g = (DataGridView)sender;
var model = g.CurrentRow.DataBoundItem as sysDataSource;
//给详情页设置数据
this.txtID.Text = model.ID.ToString();
this.txtConnectName.Text = model.ConnectName;
this.txtHost.Text = model.Host;
this.txtDataBaseName.Text = model.DataBaseName;
this.txtUsername.Text = model.Username;
this.txtPW.Text = model.Password;
SetToolButtonStatus(formStatus);
}
public override void AddFunction(object sender, EventArgs e)
{
base.AddFunction(sender, e);
SetToolButtonStatus(formStatus);
}
public override void EditFunction(object sender, EventArgs e)
{
base.EditFunction(sender, e);
SetToolButtonStatus(formStatus);
}
public override void SaveFunction(object sender, EventArgs e)
{
base.SaveFunction(sender, e);
if (ValidateData())
{
//新增
if (string.IsNullOrEmpty(txtID.Text))
{
sysDataSource newDataSource = new sysDataSource();
newDataSource.Username= txtUsername.Text;
newDataSource.ConnectName= txtConnectName.Text;
newDataSource.Host= txtHost.Text;
newDataSource.DataBaseName= txtDataBaseName.Text;
newDataSource.Password = txtPW.Text;
var id = _dataSourceServices.Insert(newDataSource);
txtID.Text = id.ToString();
if (id > 0)
{
MessageBox.Show("保存成功!", "提示");
}
}
// 修改
else
{
sysDataSource dataSource = _dataSourceServices.QueryById(int.Parse(txtID.Text));
dataSource.Username = txtUsername.Text;
dataSource.ConnectName = txtConnectName.Text;
dataSource.Host = txtHost.Text;
dataSource.DataBaseName = txtDataBaseName.Text;
dataSource.Password = txtPW.Text;
if (_dataSourceServices.Update(dataSource))
{
MessageBox.Show("保存成功!", "提示");
}
}
SetToolButtonStatus(formStatus);
var menus = GetAllDataSources();
this.dataGridViewList.DataSource = menus;
}
}
public override void CanelFunction(object sender, EventArgs e)
{
bool isAdd = formStatus == FormStatus.Add;
base.CanelFunction(sender, e);
SetToolButtonStatus(formStatus);
if (isAdd)
{
btnEdit.Enabled = false;
}
}
public override void DelFunction(object sender, EventArgs e)
{
base.DelFunction(sender, e);
base.DelFunction(sender, e);
var result = MessageBox.Show("是否删除?", "确认", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
_dataSourceServices.DeleteById(Int32.Parse(txtID.Text));
SetToolButtonStatus(formStatus);
var menus = GetAllDataSources();
this.dataGridViewList.DataSource = menus;
}
}
public override void CloseFunction(object sender, EventArgs e)
{
base.CloseFunction(sender, e);
}
private List<sysDataSource> GetAllDataSources()
{
return _dataSourceServices.Query();
}
/// <summary>
/// 设置功能按钮状态
/// </summary>
public override void SetToolButtonStatus(FormStatus status)
{
switch (status)
{
case FormStatus.Add:
{
btnAdd.Enabled = false;
btnEdit.Enabled = false;
btnSave.Enabled = true;
btnDel.Enabled = false;
btnCanel.Enabled = true;
SetControlStatus(this.groupBox1, true);
ClearControlsText(this.groupBox1);
break;
}
case FormStatus.Edit:
{
btnAdd.Enabled = false;
btnEdit.Enabled = false;
btnSave.Enabled = true;
btnDel.Enabled = false;
btnCanel.Enabled = true;
SetControlStatus(this.groupBox1, true);
break;
}
case FormStatus.View:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = true;
btnCanel.Enabled = false;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Canel:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.First:
{
btnAdd.Enabled = true;
btnEdit.Enabled = false;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Save:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = true;
btnCanel.Enabled = false;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Del:
{
btnAdd.Enabled = true;
btnEdit.Enabled = false;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
SetControlStatus(this.groupBox1, false);
ClearControlsText(this.groupBox1);
break;
}
}
}
//验证数据
private bool ValidateData()
{
bool result = false;
if (string.IsNullOrEmpty(txtConnectName.Text))
{
MessageBox.Show("连接名不能为空!");
return result;
}
if (string.IsNullOrEmpty(txtHost.Text))
{
MessageBox.Show("主机不能为空!");
return result;
}
if (string.IsNullOrEmpty(txtDataBaseName.Text))
{
MessageBox.Show("数据库不能为空!");
return result;
}
if (string.IsNullOrEmpty(txtUsername.Text))
{
MessageBox.Show("用户名不能为空!");
return result;
}
if (string.IsNullOrEmpty(txtPW.Text))
{
MessageBox.Show("密码不能为空!");
return result;
}
result = true;
return result;
}
/// <summary>
/// 测试链接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
if (ValidateData())
{
var connectionString =
$"Server={txtHost.Text};Database={txtDataBaseName.Text};User Id = {txtUsername.Text}; Password={txtPW.Text}";
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = connectionString
,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
try
{
db.Open();
MessageBox.Show("连接成功!");
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
}
}
}