以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]狐爸请进,关于行集合的问题,困扰多时。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=17550)

--  作者:casper
--  发布时间:2012/3/16 13:35:00
--  [求助]狐爸请进,关于行集合的问题,困扰多时。

这样定义行集合为什么不行?

 

 

Dim rs As  List(Of row)=Tables("订单").rows

 

提示类型转换错误

 

另外,Table("订单")表的ShowCheckBox的逻辑属性,设为True,将在行号列显示复选框,只有GetCheckedRows方法,可以获得一个Row类型的集合,该集合包括所有复选框已经选中的行。但是我想删除未选中的行,如果处理?我有下面代码会出现有的未选中行没有删除。

 

 

For Each r As Row In Tables("订单").Rows
  If
r.Checked = false Then
    r.delete

  End If
Next

 

 

[此贴子已经被作者于2012-3-16 13:36:40编辑过]

--  作者:casper
--  发布时间:2012/3/16 16:30:00
--  
求助,再顶一下!
--  作者:hhbb
--  发布时间:2012/3/16 16:35:00
--  
不要鑽牛角尖,集合一般都有條件,Tables("订单").rows不能指定條件!
Dim drs As  List(Of Datarow)=DaTables("订单").Select("A >\'\'")

--  作者:czy
--  发布时间:2012/3/17 0:43:00
--  

我觉得楼主的似乎也有道理,因为现在只能操作选中的行,而不能操作没有选中的行。

表属性中并没有显示复选框的选项,因此如果想要出现复选框必定是用ShowCheckBox方法,执行此方法后选择的复选框的值也不能保存到下一次,所以每次处理时只对需要处理的行来选择再操作就不会出现困惑了。

 

当然如果有这样的方法来处理未选中的行就更好了。


--  作者:casper
--  发布时间:2012/3/17 8:35:00
--  
C版真是一语中的啊!我现在只能采取迂回的办法,把复选框反向操作一下,再用 GetCheckedRows。
--  作者:hhbb
--  发布时间:2012/3/17 10:19:00
--  
不知是否存在[RowID/CheckBox]列,如有好辦,或增加GetCheckedRows()的反集合Not GetCheckedRows()
--  作者:lxl
--  发布时间:2012/3/17 16:35:00
--  

1、

Dim rs As List(Of Row)= New List(Of Row)(Tables("表A").Rows())

不过Tables.Rows返回的类型是RowCollection 也是一种集合 可以直接for each进行遍历,没有必要转成List

 

2、删除集合一般都反过来删

For i As Integer = Tables("表A").Rows.Count - 1 To 0 Step -1
    With Tables("表A").Rows(i)
        If .Checked = False Then
            .delete
        End If
    End With
Next