以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]AfterCheckRow  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=75963)

--  作者:huhu
--  发布时间:2015/10/18 21:13:00
--  [求助]AfterCheckRow

AfterCheckRow代码如下:

If e.Row.Checked  Then

    If (MessageBox.show("订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "三者确定要锁定吗?","提醒产线",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes) Then

        e.Row("绑锁解绑") = "锁定"

        e.Row("订单log") = "订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "  " & user.name  & "  " & Date.now & "  " & "已锁定" & vbcrlf & e.Row("订单log")

        Dim rr As DataRow = DataTables("订单主表").Find("订单编号 = \'" & e.Row("订单编号") & "\'")

        rr("log") = e.Row("订单log") & vbcrlf & rr("log")

        e.Row.Locked = True

        e.Row.Checked = True

    Else

        e.Row.Checked  = False

    End If

End If

问题,怎么勾线了复选框后,然后点击msgbox的确定按钮后,复选框变为没有勾选状态,这是怎么回事?


--  作者:大红袍
--  发布时间:2015/10/19 9:38:00
--  

代码没问题,至少我这样测试没问题。

 

If e.Row.Checked  Then
   
    If (MessageBox.show("123456","提醒产线",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes) Then
       
        e.Row.Locked = True
       
        e.Row.Checked = True
       
    Else
       
        e.Row.Checked  = False
       
    End If
   
   
End If


--  作者:huhu
--  发布时间:2015/10/20 19:55:00
--  

BeforeCheckRow代码如下:

If e.Row("订单编号") = "" Or e.Row("产品化编号") = "" Then
    MessageBox.Show("订单编号,临时版本编号,产品化编号三者尚未绑定,故不能锁定","锁定请提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
    e.Cancel  = True
End If

AfterCheckRow代码如下:

If e.Row.Checked  Then

    If (MessageBox.show("订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "三者确定要锁定吗?","提醒产线",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes) Then

        e.Row("绑锁解绑") = "锁定"

        e.Row("订单log") = "订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "  " & user.name  & "  " & Date.now & "  " & "已锁定" & vbcrlf & e.Row("订单log")

        Dim rr As DataRow = DataTables("订单主表").Find("订单编号 = \'" & e.Row("订单编号") & "\'")

        rr("log") = e.Row("订单log") & vbcrlf & rr("log")

        e.Row.Locked = True

        e.Row.Checked = True

    Else

        e.Row.Checked  = False

    End If

End If


复选框打勾也发现运行错误(未将对象引用设置到对象的实例-------今天就和它干上了

.NET Framework 版本:2.0.50727.8009

Foxtable 版本:2014.11.11.1

错误所在事件:临时版本跟踪表,AfterCheckRow

详细错误信息:

未将对象引用设置到对象的实例。


--  作者:大红袍
--  发布时间:2015/10/20 19:58:00
--  
If rr IsNot Nothing Then rr("log") = e.Row("订单log") & vbcrlf & rr("log")
--  作者:huhu
--  发布时间:2015/10/20 20:06:00
--  
哦。
增加判断rr是否存在。确实不报这个错了。
但问题是点击完msgbox的确定后,复选框仍然没有选中。

--  作者:大红袍
--  发布时间:2015/10/20 20:06:00
--  
做例子上来,2楼代码没问题
--  作者:huhu
--  发布时间:2015/10/20 20:25:00
--  
我自己做例子,发现没有问题,是选中状态。
但是我的工程死活复选框选不中。是不是其他代码干扰的
看来我只能上工程了。不好意思,凑合着看一下。
窗体:产线2

http://pan.baidu.com/s/1qW5TGVM

--  作者:大红袍
--  发布时间:2015/10/20 20:41:00
--  

应该是触发了DataColChanged事件

 

If e.Row.Checked  Then
    If (MessageBox.show("订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "三者确定要锁定吗?","提醒产线",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes) Then
systemready = False
        e.Row("绑锁解绑") = "锁定"
        e.Row("订单log") = "订单编号:" & e.Row("订单编号") & "+" & "临时版本编号:" & e.Row("临时版本编号") & "+" & "产品化编号:" & e.Row("产品化编号") & "  " & user.name  & "  " & Date.now & "  " & "已锁定" & vbcrlf & e.Row("订单log")
        Dim rr As DataRow = DataTables("订单主表").Find("订单编号 = \'" & e.Row("订单编号") & "\'")
        If rr IsNot Nothing Then
            rr("log") = e.Row("订单log") & vbcrlf & rr("log")
        End If
        e.Row.Locked = True
        e.Row.Checked = True
systemready = True       
    Else
        e.Row.Checked  = False
    End If
End If


--  作者:huhu
--  发布时间:2015/10/20 21:08:00
--  
这么改,是不会报错了。
问题1.这段代码怎么会触发datacolchanged事件?哪一列发生变化了?
问题2.勾选完,我的本意是这行锁定了,不能在勾选了。可是发现仍然能取消勾选。
e.Row.Checked = True
 e.Row.Locked = True

--  作者:大红袍
--  发布时间:2015/10/20 21:13:00
--  

你修改值自然会触发datacolchanged事件啊。

 

锁定还可以勾选,要限制,在beforeCheckRow事件判断是否锁定了,锁定就e.Cancel = true