以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]帮忙修改一下这段小代吗 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=43000) |
-- 作者:dycjj -- 发布时间:2013/11/27 21:40:00 -- [求助]帮忙修改一下这段小代吗 这是写在全局表事件StartEdit中的一段代吗,当我新增行进行编辑时,同样出现不准修改的提示,问题出在哪里呢。 Dim dr As DataRow = CurrentTable.Current.DataRow If dr IsNot Nothing Then If dr("营销人员") <> User.Name Then MessageBox.Show("大哥,这不是你的记录,你无权修改哦") e.Cancel = True End If Else If dr Is Nothing Then CurrentTable.AllowEdit = True End If End If
|
-- 作者:有点甜 -- 发布时间:2013/11/27 21:43:00 -- 你新增一行的时候,你需要给这一行赋值。编写你的datarowadded事件。 e.datarow("营销人员") = user.name
|
-- 作者:dycjj -- 发布时间:2013/11/27 21:48:00 -- 甜甜大师,这个情况还真有点不一样,我已经在表事件DataColChanged中加入了. If e.DataCol.Name = "日期" Then
e.DataRow("营销人员") = User.Name e.DataRow("操作员") = User.Name e.DataRow("统计列") = 1 End If |
-- 作者:有点甜 -- 发布时间:2013/11/27 21:54:00 -- 无法这样,新增的时候就需要填入,不然无法操作。 |
-- 作者:dycjj -- 发布时间:2013/11/27 21:54:00 -- 也就是只有当我在日期列进行编辑时。才 e.DataRow("营销人员") = User.Name |
-- 作者:有点甜 -- 发布时间:2013/11/27 21:55:00 -- 除非你这样改 If e.Col.name <> "日期" Then Dim dr As DataRow = CurrentTable.Current.DataRow If dr IsNot Nothing Then If dr("营销人员") <> User.Name Then MessageBox.Show("大哥,这不是你的记录,你无权修改哦") e.Cancel = True End If Else If dr Is Nothing Then CurrentTable.AllowEdit = True End If End If End If |
-- 作者:dycjj -- 发布时间:2013/11/27 22:10:00 -- 太妙了,甜甜大师,我怎么想不到呢,呵呵 |
-- 作者:blackzhu -- 发布时间:2013/11/28 7:47:00 -- 为啥不是 e.row 而是需要Dim dr As DataRow = CurrentTable.Current.DataRow |
-- 作者:狐狸爸爸 -- 发布时间:2013/11/28 8:18:00 -- 呵呵,是的,应该批评这种写法,不太严谨。
任何表事件,都不应该用currenttable,应该用e.table或e.dataTable,也不应该用Current,应该用e.row或e.DataRow
|
-- 作者:dycjj -- 发布时间:2013/12/2 0:19:00 -- 狐爸批评的好啊,谢谢啦 |