以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  checked  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=54397)

--  作者:CRM2013
--  发布时间:2014/7/27 15:02:00
--  checked

您好:在勾选checkedbox 时,希望最多勾选2种不同的单位,如下图,可以勾选温度、湿度、露点3行(单位为℃)和压力行(单位为Bar),就不能再勾选其他不同单位的行了, 请问如何控制?

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/7/27 15:07:00
--  

 编写 BeforeCheckRow 事件

 

Dim dws As New List(Of String)
For Each r As Row In e.Table.GetCheckedRows
    If dws.Contains(r("单位")) = False Then
        If dws.Count = 2 Then
            e.Cancel = True
            Exit For
        End If
        dws.Add(r("单位"))
    End If
Next

[此贴子已经被作者于2014-7-27 15:07:21编辑过]

--  作者:CRM2013
--  发布时间:2014/7/27 15:19:00
--  

谢谢您!

 

 


--  作者:CRM2013
--  发布时间:2014/7/27 17:47:00
--  

这个的确可以限制只能勾选2个不同的单位

但如果我已经选了2个不同的单位,如下图的温度和压力,这时我希望点击温度行的复选框后(由选中变为不选),而后可以再增加选择电流,总的结果是选2个单位

折腾了半个下午,没结果,只好请教。谢谢!


图片点击可在新窗口打开查看此主题相关图片如下:捕 获 .jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2014/7/27 17:53:00
--  

试试这样

 

[此贴子已经被作者于2014-7-27 17:58:14编辑过]

--  作者:有点甜
--  发布时间:2014/7/27 17:58:00
--  

错了,这样写

 

If e.Row.Checked  = False Then
    Dim dws As New List(Of String)
    For Each r As Row In e.Table.GetCheckedRows
        If dws.Contains(r("单位")) = False Then
            dws.Add(r("单位"))
        End If
    Next
    If dws.Contains(e.Row("单位")) = False AndAlso dws.Count = 2 Then
        e.Cancel = True
    End If 
End If


--  作者:CRM2013
--  发布时间:2014/7/27 18:45:00
--  

感激!