以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]帮忙修改一下这段小代吗  (http://foxtable.net/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
--  
图片点击可在新窗口打开查看狐爸批评的好啊,谢谢啦