Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
Ftt_Common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Ftt_Common
Commits
43222620
Commit
43222620
authored
Jan 07, 2021
by
tr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、代码优化:将基础信息绑定提升为基础能力
parent
2696ee42
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
160 additions
and
117 deletions
+160
-117
Common.cs
Tools/MyCommon/Common.cs
+43
-18
wEditBasic.cs
Tools/MyCommon/wEditBasic.cs
+76
-0
wModuleManager.cs
Tools/UI/wModuleManager.cs
+41
-99
No files found.
Tools/MyCommon/Common.cs
View file @
43222620
...
@@ -6,6 +6,48 @@ using System.Threading.Tasks;
...
@@ -6,6 +6,48 @@ using System.Threading.Tasks;
namespace
Tools.MyCommon
namespace
Tools.MyCommon
{
{
/*
* Info : 全局的基础信息
*/
/// <summary>
/// 模块信息:菜单渲染时使用
/// </summary>
public
class
ModuleInfo
{
/// <summary>
/// 窗体对象
/// </summary>
public
Type
ViewFormType
{
get
;
set
;
}
/// <summary>
/// 显示名称
/// </summary>
public
string
Text
{
get
;
set
;
}
/// <summary>
/// 提示内容
/// </summary>
public
string
ToolTipText
{
get
;
set
;
}
}
/// <summary>
/// 绑定信息
/// </summary>
public
class
BindInfo
{
/// <summary>
/// 绑定的数据源列名称
/// </summary>
public
string
ColumnName
{
get
;
set
;
}
/// <summary>
/// 绑定的控件属性名称
/// </summary>
public
string
PropertyName
{
get
;
set
;
}
}
/*
* Type:为部分模块提供相对规范的类型区分
*/
/// <summary>
/// <summary>
/// 配置类型
/// 配置类型
/// </summary>
/// </summary>
...
@@ -46,22 +88,5 @@ namespace Tools.MyCommon
...
@@ -46,22 +88,5 @@ namespace Tools.MyCommon
/// </summary>
/// </summary>
public
static
string
Doc
=>
"Doc"
;
public
static
string
Doc
=>
"Doc"
;
}
}
/// <summary>
/// 模块信息
/// </summary>
public
class
ModuleInfo
{
/// <summary>
/// 窗体对象
/// </summary>
public
Type
ViewFormType
{
get
;
set
;
}
/// <summary>
/// 显示名称
/// </summary>
public
string
Text
{
get
;
set
;
}
/// <summary>
/// 提示内容
/// </summary>
public
string
ToolTipText
{
get
;
set
;
}
}
}
}
Tools/MyCommon/wEditBasic.cs
View file @
43222620
...
@@ -123,6 +123,7 @@ namespace Tools.MyCommon
...
@@ -123,6 +123,7 @@ namespace Tools.MyCommon
return
true
;
return
true
;
}
}
#
region
结束编辑
/// <summary>
/// <summary>
/// 基本信息-结束编辑
/// 基本信息-结束编辑
...
@@ -180,5 +181,80 @@ namespace Tools.MyCommon
...
@@ -180,5 +181,80 @@ namespace Tools.MyCommon
}
}
}
}
}
}
#
endregion
#
region
数据绑定
/// <summary>
/// 绑定基础信息
/// </summary>
/// <param name="parent"></param>
/// <param name="drv"></param>
public
void
BindBaseInfo
(
Control
parent
,
DataRowView
drv
)
{
foreach
(
Control
c
in
parent
?.
Controls
)
{
if
(
c
is
TextBox
)
{
this
.
Binding
(
c
as
TextBox
,
drv
);
}
else
if
(
c
is
CheckBox
)
{
this
.
Binding
(
c
as
CheckBox
,
drv
);
}
}
}
/// <summary>
/// 设置控件绑定信息
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="c"></param>
/// <param name="drv"></param>
private
void
Binding
<
T
>(
T
c
,
DataRowView
drv
)
where
T
:
Control
{
//获取绑定信息
var
bind
=
this
.
GetBindingInfo
(
c
);
//数据源是否包含该列
var
field
=
bind
.
ColumnName
;
if
(!
drv
.
Row
.
Table
.
Columns
.
Contains
(
field
))
return
;
//布尔特殊处理
if
(
drv
[
field
]
==
DBNull
.
Value
&&
drv
.
Row
.
Table
.
Columns
[
field
].
DataType
.
Name
.
Equals
(
"Boolean"
))
drv
[
field
]
=
false
;
//设置绑定
var
property
=
bind
.
PropertyName
;
c
.
DataBindings
.
Clear
();
c
.
DataBindings
.
Add
(
property
,
drv
,
field
);
}
/// <summary>
/// 获取绑定属性名称
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="c"></param>
/// <returns></returns>
private
BindInfo
GetBindingInfo
<
T
>(
T
c
)
where
T
:
Control
{
var
property
=
""
;
var
column
=
""
;
if
(
c
is
TextBox
)
{
property
=
"Text"
;
column
=
c
.
Name
.
Substring
(
2
);
}
else
if
(
c
is
CheckBox
)
{
property
=
"Checked"
;
column
=
c
.
Name
.
Substring
(
2
);
}
return
new
BindInfo
()
{
ColumnName
=
column
,
PropertyName
=
property
};
}
#
endregion
}
}
}
}
Tools/UI/wModuleManager.cs
View file @
43222620
...
@@ -43,12 +43,10 @@ namespace Tools.UI
...
@@ -43,12 +43,10 @@ namespace Tools.UI
#
endregion
#
endregion
public
wModuleManager
()
public
wModuleManager
()
{
{
InitializeComponent
();
InitializeComponent
();
}
}
private
void
wModuleManager_Load
(
object
sender
,
EventArgs
e
)
private
void
wModuleManager_Load
(
object
sender
,
EventArgs
e
)
{
{
//工具栏事件
//工具栏事件
...
@@ -144,61 +142,6 @@ namespace Tools.UI
...
@@ -144,61 +142,6 @@ namespace Tools.UI
Utils
.
Tip
(
result
,
800
,
600
);
Utils
.
Tip
(
result
,
800
,
600
);
}
}
/// <summary>
/// 生成表格Insert语句
/// </summary>
/// <param name="rows"></param>
/// <returns></returns>
private
string
GenInsertSQL
(
params
DataRow
[]
rows
)
{
if
(
rows
==
null
||
rows
.
Length
==
0
)
return
""
;
//
var
dt
=
rows
[
0
].
Table
;
var
colist
=
this
.
GetTableColumns
(
dt
);
var
values
=
rows
.
Select
(
r
=>
this
.
GenValues
(
r
,
colist
));
var
result
=
$"INSERT INTO
{
dt
.
TableName
}
\r\n\t
{
this
.
GenColumns
(
colist
)}
\r\nVALUES\r\n\t
{
string
.
Join
(
",\r\n\t"
,
values
)}
"
;
return
result
;
}
/// <summary>
/// 生成列集合
/// </summary>
/// <param name="colist"></param>
/// <returns></returns>
private
string
GenColumns
(
List
<
string
>
colist
)
{
return
$"([
{
string
.
Join
(
"], ["
,
colist
)}
])"
;
}
/// <summary>
/// 生成值集合
/// </summary>
/// <param name="dr"></param>
/// <param name="colist"></param>
/// <returns></returns>
private
string
GenValues
(
DataRow
dr
,
List
<
string
>
colist
)
{
var
valist
=
colist
.
Select
(
col
=>
col
.
ToLower
().
Equals
(
"modelid"
)
?
"@ModelID"
:
$"'
{
dr
[
col
].
ToString
()}
'"
);
return
$"(
{
string
.
Join
(
", "
,
valist
)}
)"
;
}
/// <summary>
/// 获取有效列(非自增列)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private
List
<
string
>
GetTableColumns
(
DataTable
dt
)
{
var
result
=
new
List
<
string
>();
dt
.
Columns
.
Cast
<
DataColumn
>().
ToList
()
.
ForEach
(
c
=>
{
if
(!
c
.
AutoIncrement
)
{
result
.
Add
(
c
.
ColumnName
);
}
});
return
result
;
}
#
endregion
#
endregion
#
region
上下文菜单事件
#
region
上下文菜单事件
...
@@ -268,7 +211,7 @@ namespace Tools.UI
...
@@ -268,7 +211,7 @@ namespace Tools.UI
if
(
drv
!=
null
)
if
(
drv
!=
null
)
{
{
//绑定基本信息
//绑定基本信息
this
.
BindBaseInfo
(
drv
);
this
.
BindBaseInfo
(
this
.
tableLayoutPanel1
,
drv
);
//筛选明细:明细不需要重复绑定
//筛选明细:明细不需要重复绑定
this
.
_dtDetail
.
DefaultView
.
RowFilter
=
$"ModelID =
{
ModelID
}
"
;
this
.
_dtDetail
.
DefaultView
.
RowFilter
=
$"ModelID =
{
ModelID
}
"
;
}
}
...
@@ -447,63 +390,62 @@ namespace Tools.UI
...
@@ -447,63 +390,62 @@ namespace Tools.UI
}
}
#
endregion
#
endregion
#
region
数据绑定
#
region
SQL
生成相关
/// <summary>
/// <summary>
///
绑定基本信息
///
生成表格Insert语句
/// </summary>
/// </summary>
/// <param name="drv"></param>
/// <param name="rows"></param>
private
void
BindBaseInfo
(
DataRowView
drv
)
/// <returns></returns>
{
private
string
GenInsertSQL
(
params
DataRow
[]
rows
)
foreach
(
Control
c
in
this
.
tableLayoutPanel1
.
Controls
)
{
if
(
c
is
TextBox
)
{
{
this
.
Binding
(
c
as
TextBox
,
drv
);
if
(
rows
==
null
||
rows
.
Length
==
0
)
return
""
;
//
var
dt
=
rows
[
0
].
Table
;
var
colist
=
this
.
GetTableColumns
(
dt
);
var
values
=
rows
.
Select
(
r
=>
this
.
GenValues
(
r
,
colist
));
var
result
=
$"INSERT INTO
{
dt
.
TableName
}
\r\n\t
{
this
.
GenColumns
(
colist
)}
\r\nVALUES\r\n\t
{
string
.
Join
(
",\r\n\t"
,
values
)}
"
;
return
result
;
}
}
else
if
(
c
is
CheckBox
)
/// <summary>
/// 生成列集合
/// </summary>
/// <param name="colist"></param>
/// <returns></returns>
private
string
GenColumns
(
List
<
string
>
colist
)
{
{
this
.
Binding
(
c
as
CheckBox
,
drv
);
return
$"([
{
string
.
Join
(
"], ["
,
colist
)}
])"
;
}
}
}
}
/// <summary>
/// <summary>
///
设置控件绑定信息
///
生成值集合
/// </summary>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dr"></param>
/// <param name="c"></param>
/// <param name="colist"></param>
/// <param name="drv"></param>
/// <returns></returns>
private
void
Binding
<
T
>(
T
c
,
DataRowView
drv
)
where
T
:
Control
private
string
GenValues
(
DataRow
dr
,
List
<
string
>
colist
)
{
{
//数据源是否包含该列
var
valist
=
colist
.
Select
(
col
=>
col
.
ToLower
().
Equals
(
"modelid"
)
?
"@ModelID"
:
$"'
{
dr
[
col
].
ToString
()}
'"
);
var
field
=
c
.
Name
.
Substring
(
2
);
//去掉前缀
return
$"(
{
string
.
Join
(
", "
,
valist
)}
)"
;
if
(!
drv
.
Row
.
Table
.
Columns
.
Contains
(
field
))
return
;
//布尔特殊处理
if
(
drv
[
field
]
==
DBNull
.
Value
&&
drv
.
Row
.
Table
.
Columns
[
field
].
DataType
.
Name
.
Equals
(
"Boolean"
))
drv
[
field
]
=
false
;
//设置绑定
var
property
=
this
.
GetPropertyName
(
c
);
c
.
DataBindings
.
Clear
();
c
.
DataBindings
.
Add
(
property
,
drv
,
field
);
}
}
/// <summary>
/// <summary>
/// 获取
绑定属性名称
/// 获取
有效列(非自增列)
/// </summary>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dt"></param>
/// <param name="c"></param>
/// <returns></returns>
/// <returns></returns>
private
string
GetPropertyName
<
T
>(
T
c
)
where
T
:
Control
private
List
<
string
>
GetTableColumns
(
DataTable
dt
)
{
var
result
=
new
List
<
string
>();
dt
.
Columns
.
Cast
<
DataColumn
>().
ToList
()
.
ForEach
(
c
=>
{
if
(!
c
.
AutoIncrement
)
{
{
var
result
=
""
;
result
.
Add
(
c
.
ColumnName
);
if
(
c
is
TextBox
)
}
result
=
"Text"
;
});
else
if
(
c
is
CheckBox
)
result
=
"Checked"
;
return
result
;
return
result
;
}
}
#
endregion
#
endregion
#
region
便捷操作:字符串
ID
-
自动生成
#
region
便捷操作:字符串
ID
-
自动生成
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment