Commit b9a70198 authored by tr's avatar tr

Revert "1、模块管理:代码优化"

This reverts commit f015b593.
parent fbf6be36
...@@ -25,14 +25,18 @@ namespace Tools.UI ...@@ -25,14 +25,18 @@ namespace Tools.UI
List<TQuery> tableList = null; List<TQuery> tableList = null;
DataTable _dtBusinessMode = null; DataTable _dtBusinessMode = null;
/// <summary> /// <summary>
/// 模块 /// 模块
/// </summary> /// </summary>
private string T_Module => "Sys_Module"; private string T_Module => "Sys_Module";
/// <summary> /// <summary>
/// 模块-表 /// 模块-表
/// </summary> /// </summary>
private string T_ModuleTable => "Sys_ModuleTable"; private string T_ModuleTable => "Sys_ModuleTable";
/// <summary> /// <summary>
/// 上下文菜单-源控件名称 /// 上下文菜单-源控件名称
/// </summary> /// </summary>
...@@ -47,7 +51,7 @@ namespace Tools.UI ...@@ -47,7 +51,7 @@ namespace Tools.UI
private void wSysChecker_Load(object sender, EventArgs e) private void wSysChecker_Load(object sender, EventArgs e)
{ {
this.InitDefaultDbLink(); this.SetConfig();
this.InitData(); this.InitData();
this.InitUI(); this.InitUI();
this._IsFirstLoad = false; this._IsFirstLoad = false;
...@@ -70,6 +74,7 @@ namespace Tools.UI ...@@ -70,6 +74,7 @@ namespace Tools.UI
new TQuery(this.T_Module, $"select * from {this.T_Module}") , new TQuery(this.T_Module, $"select * from {this.T_Module}") ,
new TQuery(this.T_ModuleTable, $"select * from {this.T_ModuleTable}") new TQuery(this.T_ModuleTable, $"select * from {this.T_ModuleTable}")
}; };
this._ds = this._db.GetData(tableList, true); this._ds = this._db.GetData(tableList, true);
} }
catch (Exception ex) catch (Exception ex)
...@@ -77,13 +82,14 @@ namespace Tools.UI ...@@ -77,13 +82,14 @@ namespace Tools.UI
Utils.Tip($"获取数据出错:\r\n{ex.Message}"); Utils.Tip($"获取数据出错:\r\n{ex.Message}");
return; return;
} }
//获取业务模块数据
this._dtBusinessMode = GetBusinessModel(); //设置数据源;子表格在父表格之前绑定,可以更好的利用父表格绑定时出发的行改变事件,进行子表格的数据的过滤
//设置数据源;子表格在父表格之前绑定,利于父表格绑定时出发的行改变事件
this.dgvModuleTable.DataSource = this._dtModuleTable = this._ds.Tables[this.T_ModuleTable]; this.dgvModuleTable.DataSource = this._dtModuleTable = this._ds.Tables[this.T_ModuleTable];
this.dgvModule.DataSource = this._ds.Tables[this.T_Module]; this.dgvModule.DataSource = this._ds.Tables[this.T_Module];
this.dgvBusinessModel.DataSource = this._dtBusinessMode; this.dgvBusinessModel.DataSource = _dtBusinessMode = GetBusinessModel();
} }
public override void InitUI() public override void InitUI()
{ {
//初始化数据表格 //初始化数据表格
...@@ -114,6 +120,9 @@ namespace Tools.UI ...@@ -114,6 +120,9 @@ namespace Tools.UI
this.tsmiAddRow.Click += TsmiAddRow_Click; this.tsmiAddRow.Click += TsmiAddRow_Click;
this.tsmiDelRow.Click += TsmiDelRow_Click; this.tsmiDelRow.Click += TsmiDelRow_Click;
} }
public override bool Save() public override bool Save()
{ {
//结束编辑 //结束编辑
...@@ -127,10 +136,11 @@ namespace Tools.UI ...@@ -127,10 +136,11 @@ namespace Tools.UI
return b; return b;
} }
/// <summary> /// <summary>
/// 初始化默认数据库链接 /// 设置配置信息
/// </summary> /// </summary>
private void InitDefaultDbLink() private void SetConfig()
{ {
//读取配置信息 //读取配置信息
var dtSetting = new DataTable("AppSetting"); var dtSetting = new DataTable("AppSetting");
...@@ -166,6 +176,7 @@ namespace Tools.UI ...@@ -166,6 +176,7 @@ namespace Tools.UI
{ {
this.InitData(); this.InitData();
} }
private void TsbDB_Click(object sender, EventArgs e) private void TsbDB_Click(object sender, EventArgs e)
{ {
//数据库 //数据库
...@@ -184,26 +195,12 @@ namespace Tools.UI ...@@ -184,26 +195,12 @@ namespace Tools.UI
} }
#endregion #endregion
#region 数据表格-事件
/* #region 数据表格-事件
* 关于行改变:
* 1、RowEnter:首次加载时会触发多次,即每次往DataGridView装载行或改变行时都会触发
* 2、SelectionChanged:首次加载时不触发,这里通过if (this._IsFirstLoad) return;避免首次问题
*
*/
/// <summary> /// <summary>
/// 事件:数据错误(必填列未填写时会报错) /// 选中行改变事件,需配合 SelectionMode = DataGridViewSelectionMode.FullRowSelect.
/// </summary> /// RowEnter 会触发多次
/// <param name="sender"></param>
/// <param name="e"></param>
private void DgvModule_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Exception.Message);
}
/// <summary>
/// 事件:表格行改变(需配合 SelectionMode = DataGridViewSelectionMode.FullRowSelect)
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
...@@ -218,19 +215,9 @@ namespace Tools.UI ...@@ -218,19 +215,9 @@ namespace Tools.UI
} }
} }
/// <summary> /// <summary>
/// 事件:数据错误 /// 选中行改变事件,需配合 SelectionMode = DataGridViewSelectionMode.FullRowSelect.
/// </summary> /// RowEnter 会触发多次
/// <param name="sender"></param>
/// <param name="e"></param>
private void DgvModuleTable_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Exception.Message);
}
/// <summary>
/// 事件:表格行改变
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
...@@ -249,22 +236,88 @@ namespace Tools.UI ...@@ -249,22 +236,88 @@ namespace Tools.UI
} }
} }
/// <summary> // 必填列未填写时会报错,需要处理
/// 事件:表格行改变 private void DgvModuleTable_DataError(object sender, DataGridViewDataErrorEventArgs e)
/// </summary> {
/// <param name="sender"></param> MessageBox.Show(e.Exception.Message);
/// <param name="e"></param> }
private void DgvModule_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Exception.Message);
}
//
private void DgvBusinessModel_SelectionChanged(object sender, EventArgs e) private void DgvBusinessModel_SelectionChanged(object sender, EventArgs e)
{ {
var selectRows = dgvModuleTable.SelectedRows; var selectRows = dgvModuleTable.SelectedRows;
if (ckbMode.Checked && selectRows.Count == 1) // 根据所选业务模块,反向定位功能模块, if (ckbMode.Checked && selectRows.Count == 1) // 根据所选业务模块,反向定位功能模块,
{ {
var rowIndex = selectRows[0].Index; var rowIndex = selectRows[0].Index;
} }
} }
#endregion #endregion
/// <summary>
/// 获取表的列信息(系统查询)
/// </summary>
/// <param name="tabName"></param>
/// <returns></returns>
private DataTable GetTableColumnFromSystem(string tabName)
{
var sqlTableColumn = $@"Select 序号, 列名, 数据类型, 主键, 唯一标识, 索引, 允许空, 默认值, 说明
From
(Select d.name As 表名, a.colid As '序号', a.name As '列名',
Case When b.name In ('varchar', 'nvarchar', 'varbinary', 'decimal', 'numeric') Then
b.name + '(' + Cast(IsNull(Case b.name When 'int' Then Null When 'text' Then Null When 'datetime' Then Null Else ColumnProperty(a.id, a.name, 'PRECISION')End, '') As Varchar(5))
+ Case When b.name In ('decimal', 'numeric') Then ',' + Cast(ColumnProperty(a.id, a.name, 'Scale') As Varchar(5))Else '' End + ')' Else b.name End As '数据类型', Case ix.is_primary_key When 1 Then '√' Else '' End As '主键',
Case ix.is_unique When 1 Then '√' Else '' End As '唯一标识', Case When ix.name Is Null Then '' Else '√' End As '索引', (Case When a.isnullable = 1 Then '√' Else '' End) As '允许空',
Case When e.text Is Null Then ''
When Left(e.text, 2) = '((' Then Substring(e.text, 3, Len(e.text) - 4)
When Left(e.text, 1) = '(' Then Substring(e.text, 2, Len(e.text) - 2)Else e.text End As '默认值', Case ix.is_primary_key When 1 Then '自增主键' Else IsNull(f.value, '')End As '说明'
From sys.syscolumns a
Left Join sys.types b On a.xtype = b.user_type_id
Inner Join sys.sysobjects d On a.id = d.id And d.xtype = 'U' And d.name != 'dtproperties'
Left Join sys.syscomments e On a.cdefault = e.id
Left Join sys.extended_properties f On f.major_id = d.id And f.minor_id = a.colid
Left Join sys.extended_properties ft On ft.major_id = d.id And ft.minor_id = 0
Left Join sys.index_columns ixc On ixc.object_id = a.id And ixc.column_id = a.colid
Left Join sys.indexes ix On ix.object_id = ixc.object_id And ix.index_id = ixc.index_id) t
Where 表名 = '{tabName}'
Order By
表名, 序号;";
return _db.GetDataTable(sqlTableColumn, "TableColumn");
}
/// <summary>
/// 获取业务模块
/// </summary>
/// <param name="tabName"></param>
/// <returns></returns>
private DataTable GetBusinessModel()
{
var sql = @" Select Distinct a.ID As ModelID, a.Name As ModelName, b.BusinessObject, b.WinForm, IsNull(b.Param, '') As Param, c.ModuleId, Case When c.ModuleId Is Null Then 0 Else 1 End As IsSelect
From dbo.SysBusinessModel a
Left Join dbo.SysFunction b On b.ModelID = a.ID And b.Name In ('Add') And Len(b.WinForm) > 1
Left Join dbo.Sys_ModuleBusinessModel c On c.ModelId = a.ID
Where Not Exists (Select 1 From SysBusinessModel Where PrevID = a.ID)
Order By a.ID; ";
return _db.GetDataTable(sql, "BusinessModel", false);
}
#region 上下文菜单-事件 #region 上下文菜单-事件
private void TsmiAddRow_Click(object sender, EventArgs e) private void TsmiAddRow_Click(object sender, EventArgs e)
...@@ -328,53 +381,7 @@ namespace Tools.UI ...@@ -328,53 +381,7 @@ namespace Tools.UI
#endregion #endregion
/// <summary>
/// 获取表的列信息(系统查询)
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
private DataTable GetTableColumnFromSystem(string tableName)
{
var sqlTableColumn = $@"Select 序号, 列名, 数据类型, 主键, 唯一标识, 索引, 允许空, 默认值, 说明
From
(Select d.name As 表名, a.colid As '序号', a.name As '列名',
Case When b.name In ('varchar', 'nvarchar', 'varbinary', 'decimal', 'numeric') Then
b.name + '(' + Cast(IsNull(Case b.name When 'int' Then Null When 'text' Then Null When 'datetime' Then Null Else ColumnProperty(a.id, a.name, 'PRECISION')End, '') As Varchar(5))
+ Case When b.name In ('decimal', 'numeric') Then ',' + Cast(ColumnProperty(a.id, a.name, 'Scale') As Varchar(5))Else '' End + ')' Else b.name End As '数据类型', Case ix.is_primary_key When 1 Then '√' Else '' End As '主键',
Case ix.is_unique When 1 Then '√' Else '' End As '唯一标识', Case When ix.name Is Null Then '' Else '√' End As '索引', (Case When a.isnullable = 1 Then '√' Else '' End) As '允许空',
Case When e.text Is Null Then ''
When Left(e.text, 2) = '((' Then Substring(e.text, 3, Len(e.text) - 4)
When Left(e.text, 1) = '(' Then Substring(e.text, 2, Len(e.text) - 2)Else e.text End As '默认值', Case ix.is_primary_key When 1 Then '自增主键' Else IsNull(f.value, '')End As '说明'
From sys.syscolumns a
Left Join sys.types b On a.xtype = b.user_type_id
Inner Join sys.sysobjects d On a.id = d.id And d.xtype = 'U' And d.name != 'dtproperties'
Left Join sys.syscomments e On a.cdefault = e.id
Left Join sys.extended_properties f On f.major_id = d.id And f.minor_id = a.colid
Left Join sys.extended_properties ft On ft.major_id = d.id And ft.minor_id = 0
Left Join sys.index_columns ixc On ixc.object_id = a.id And ixc.column_id = a.colid
Left Join sys.indexes ix On ix.object_id = ixc.object_id And ix.index_id = ixc.index_id) t
Where 表名 = '{tableName}'
Order By
表名, 序号;";
return _db.GetDataTable(sqlTableColumn, "TableColumn");
}
/// <summary>
/// 获取业务模块
/// </summary>
/// <param name="tabName"></param>
/// <returns></returns>
private DataTable GetBusinessModel()
{
var sql = @" Select Distinct a.ID As ModelID, a.Name As ModelName, b.BusinessObject, b.WinForm, IsNull(b.Param, '') As Param, c.ModuleId, Case When c.ModuleId Is Null Then 0 Else 1 End As IsSelect
From dbo.SysBusinessModel a
Left Join dbo.SysFunction b On b.ModelID = a.ID And b.Name In ('Add') And Len(b.WinForm) > 1
Left Join dbo.Sys_ModuleBusinessModel c On c.ModelId = a.ID
Where Not Exists (Select 1 From SysBusinessModel Where PrevID = a.ID)
Order By a.ID; ";
return _db.GetDataTable(sql, "BusinessModel", false);
}
/// <summary> /// <summary>
/// 初始化数据表格 /// 初始化数据表格
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment