员工编号为数据字典,录入之后,编号居然消失了,已经设定一旦员工编号为空,则姓名也将为空,
事实上员工编号就是没有为空,只是显示的问题
见以下动画:
此主题相关图片如下:gz.gif
在PreEdite事件设置数据字典
If e.Col.Name = "ygbh" and e.Row.IsNull("scz") = False then
If e.IsFocusCell Then '如果是焦点单元格
Dim dmp1 as New TableDataMap
dmp1.DataTable = "yggz" '指定数据来源表
dmp1.ValueCol = "ygbh" '指定取值列
dmp1.DisplayCol = "ygbh" '指定显示列
'指定下拉列表时显示那些列的数据
dmp1.ListCols = "ygbh,xm"
dmp1.Filter = "[scz] = '" & e.Row("scz") & "'" '则只显示该生产组的员工
dmp1.Sort = "xm"
e.Col.DataMap = dmp1.CreateDataMap() '生成并设置DataMap
end if
End If在DataColChanged事件中设置姓名取值,没有其他的代码
if e.DataCol.Name="ygbh" then
if e.DataRow.IsNull("ygbh") then
e.DataRow("xm") = nothing
else
Dim dr As Datarow= DataTables("yggz").Find("ygbh = '" & e.DataRow("ygbh") & "'")
If dr IsNot Nothing then '一定要判断是否存在对应的行
e.DataRow("xm") = dr("xm")
else
e.DataRow("xm") = nothing
End If
end if
end if
如果没有在drawcell设置代码,确实是个怪现象, 是不是等于单元格的字体颜色等同于表背景颜色了?原来想要这个的,狐爸说用drawcell。
不过,一不小心,又发现这一个新功能了~ 恭喜啊~
这么复杂的,我还没有运用到~
[此贴子已经被作者于2009-5-23 22:40:03编辑过]
员工编号列显示是是根据数组字典来的。
如果数据字典设置了条件,而且员工编号列的内容不符者这个条件,就显示不了。
以下是引用狐狸爸爸在2009-5-25 9:13:00的发言:
员工编号列显示是是根据数组字典来的。
如果数据字典设置了条件,而且员工编号列的内容不符者这个条件,就显示不了。
因为禁用了手工录入,所以肯定不存在你所说的情况
其实1楼的gif表明了:保存后重新打开,显示正常,就是在录入过程中“显示”有问题的,“数据”是存在的
没有看到文件,我估计就是这个原因。
或者检查一下列类型。
改动了自带的示例,模拟1楼的情况,结果还是有如同1楼的gif
请老六进入看看,到底哪里出了问题
[此贴子已经被作者于2009-5-25 11:12:10编辑过]
以下是引用狐狸爸爸在2009-5-25 12:49:00的发言:
问题出在这里:
dmp1.Filter = "[班级] = '" & e.Row("班级") & "'"
筛选出哪个班级的,就只有那个班级正常,原因就像我前面说的。
那么,内容不符者这个条件,就显示不了,这岂不是数据字典的“短肋”了,有否改进的可能?就是让非符合条件的也能正常显示呢?