以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]副本表列的Remove (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173585) |
-- 作者:张松波 -- 发布时间:2021/12/7 1:45:00 -- [求助]副本表列的Remove 窗口1里有一个table控件,绑定到[表A](这个表A有很多列)副本表设为true, 加载的是从后台MSSQL筛选[表A]出来的某些行,用以下代码无法移除要移除的行。如果副本表设为False就可以。请帮看下怎么回事,谢谢。 代码写在窗口1的 AfterLoad 里的。
Dim t As Table = e.Form.Controls("Table1").Table Dim zds() As String = {"姓名","性别","年龄"} For i As Integer = 0 To zds.Length - 1 If t.Cols.Contains(zds(i)) = False Then t.Cols.Remove(zds(i)) End If Next 如果用最原始的办法把代码改为如下,即使是副本表也起作用。不知道是什么原因。 Dim t As Table = e.Form.Controls("Table1").Table If t.Cols.Contains("备注") Then t.Cols.Remove("备注","身份证号",--------等等) End If 就是因为列太多了,想用最偷懒的办法,才选择最上边的代码。 [此贴子已经被作者于2021/12/7 1:46:17编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/12/7 9:09:00 -- 是要移除【"姓名","性别","年龄"】这些列,还是除了这些列都移除掉? |
-- 作者:张松波 -- 发布时间:2021/12/7 10:05:00 -- 是移除除了姓名、性别、年龄的列。我发现我if -- end if 这段写错了,改回来了。现在判断t.cols(i).name的值属不属于Dim zds() As String = {"姓名","性别","年龄"}的元素,请问不用for语句有没有更简单的代码(类似于select语句的IN,一下子就判断出来了的那种)。 |
-- 作者:有点蓝 -- 发布时间:2021/12/7 10:38:00 -- Dim t As Table = e.Form.Controls("Table1").Table Dim lst As new List(of String) lst.AddRange( {"姓名","性别","年龄"}) For i As Integer = t.Cols.count - 1 To 0 Step -1 If lst.Contains(t.Cols(i).Name) = False Then t.Cols.Remove(t.Cols(i).Name) End If Next
|
-- 作者:张松波 -- 发布时间:2021/12/7 12:07:00 -- 感谢老师的回复。您的代码好用。看了您的代码我才反应过来,需要从后往前移除。 |