以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]属性窗口的全局代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=111413) |
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 14:34:00 -- [求助]属性窗口的全局代码 老师, 原来您给的例子,是属性在列取得; 属性太多,列放不下, 希望窗口中设定属性能相应的更表同时跟改设置,全局变量代码怎么改成根据行取得和赋值呢,烦您在给弄下(暂时忽略某些属性不能取值的错误)。 [此贴子已经被作者于2017/12/21 15:43:45编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/21 15:09:00 -- 你想做什么?下面代码看懂了没有?
on error resume Next
如果你像反向,根据表数据给控件赋值,那你就写setValue即可啊。 |
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 15:21:00 -- 楼上代码是我写 我 指的是全局代码怎么改 点击窗口 CHECK1 控件 在PANL1设定属性 后更改表 控件大小中的属性数据 ;同时 PANL1设定属性从表 控件大小 的属性数据反写控件的属性 也就是 下面标注颜色部分 能变成根据行取值 (原来是列) \'实体对象和DataRow的互相赋值 \'根据相同名称的属性和列名进行操作 Public Class ConvertHelper \'把DataRow值赋值到对象的实体对象 Public Shared Sub FromDataRow(ByVal dr As DataRow, ByRef entity As WeChat.EntityBase) Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties Dim f As System.Reflection.PropertyInfo For Each f In fs If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataCols.Contains(f.Name)) Then Dim o As Object = dr(f.Name) If (Not o Is DBNull.Value) Then f.SetValue(entity, o, Nothing) End If End If Next End Sub \' 把实体值赋值到DataRow Public Shared Sub ToDataRow(ByVal entity As WeChat.EntityBase, ByRef dr As DataRow) Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties Dim f As System.Reflection.PropertyInfo For Each f In fs If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataCols.Contains(f.Name)) Then Dim o As Object = f.GetValue(entity, Nothing) If (o Is Nothing) Then dr(f.Name) = DBNull.Value Else dr(f.Name) = o End If End If Next End Sub End class |
||||
-- 作者:有点甜 -- 发布时间:2017/12/21 15:28:00 -- 照抄2楼代码,改成根据控件名、属性名在表格查找到对应的行,然后取值或赋值。 |
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 15:35:00 -- 老师, 2楼代码没问题,我要说的是 通过窗口1的 系统属性设置窗口去写表数据,全局代码没这么写过,怎么照抄啊?
|
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 15:44:00 -- 是这个,忽略1楼的例子
[此贴子已经被作者于2017/12/21 16:19:34编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/21 15:45:00 -- 以下是引用blsu33在2017/12/21 15:35:00的发言:
老师, 2楼代码没问题,我要说的是 通过窗口1的 系统属性设置窗口去写表数据,全局代码没这么写过,怎么照抄啊?
如果是设置属性后触发事件,绑定PropertyValueChanged事件,参考
给表格赋值,可以在触发事件后查找修改。或者照抄你2楼的代码全部一次性修改 |
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 15:50:00 -- 老师, 楼上的例子绑定的部分不会啊6楼就是想要的,就是全局代码不会写,望您给在看看6楼的例子。
|
||||
-- 作者:blsu33 -- 发布时间:2017/12/21 15:57:00 -- 这块怎么写呢 \'实体对象和DataRow的互相赋值 \'根据相同名称的属性和列名进行操作 Public Class ConvertHelper \'把DataRow值赋值到对象的实体对象 Public Shared Sub FromDataRow(ByVal dr As DataRow, ByRef entity As WeChat.EntityBase) Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties Dim f As System.Reflection.PropertyInfo For Each f In fs If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataRows.find("控件名称="\'& f.Name &"\' and 属性=\'"& ???? &") Then Dim o As Object = dr(f.Name) If (Not o Is DBNull.Value) Then f.SetValue(entity, o, Nothing) End If End If Next End Sub \' 把实体值赋值到DataRow Public Shared Sub ToDataRow(ByVal entity As WeChat.EntityBase, ByRef dr As DataRow) Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties Dim f As System.Reflection.PropertyInfo For Each f In fs If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataRows.find("控件名称="\'& f.Name &"\' and 属性=\'"& ???? &") Then Dim o As Object = f.GetValue(entity, Nothing) If (o Is Nothing) Then dr(f.Name) = DBNull.Value Else dr(f.Name) = o End If End If Next End Sub End class
|
||||
-- 作者:有点甜 -- 发布时间:2017/12/21 15:58:00 -- 绑定 PropertyValueChanged 事件,绑定事件类似参考
http://www.foxtable.com/webhelp/scr/2374.htm
里面的代码直接写2楼代码即可。 |