Foxtable(狐表)用户栏目专家坐堂 → [求助]副本表列的Remove


  共有3016人关注过本帖树形打印复制链接

主题:[求助]副本表列的Remove

帅哥哟,离线,有人找我吗?
张松波
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:825 威望:0 精华:0 注册:2018/2/3 13:10:00
[求助]副本表列的Remove  发帖心情 Post By:2021/12/7 1:45:00 [只看该作者]

窗口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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 9:09:00 [只看该作者]

是要移除【"姓名","性别","年龄"】这些列,还是除了这些列都移除掉?

 回到顶部
帅哥哟,离线,有人找我吗?
张松波
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:825 威望:0 精华:0 注册:2018/2/3 13:10:00
  发帖心情 Post By:2021/12/7 10:05:00 [只看该作者]

是移除除了姓名、性别、年龄的列。我发现我if --  end if 这段写错了,改回来了。现在判断t.cols(i).name的值属不属于Dim zds() As String = {"姓名","性别","年龄"}的元素,请问不用for语句有没有更简单的代码(类似于select语句的IN,一下子就判断出来了的那种)。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
张松波
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:825 威望:0 精华:0 注册:2018/2/3 13:10:00
  发帖心情 Post By:2021/12/7 12:07:00 [只看该作者]

感谢老师的回复。您的代码好用。看了您的代码我才反应过来,需要从后往前移除。

 回到顶部