Foxtable(狐表)用户栏目专家坐堂 → 关于列顺序批量调整的求助(商业版与开发版)


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

主题:关于列顺序批量调整的求助(商业版与开发版)

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 1:40:00 [显示全部帖子]

代码没Y版好,只是多一种方法。

 

Dim t As Table = Tables("窗口1_Table1")
Dim s As String
Dim Names(t.Cols.Count - 3) As String
For Each c As Col In t.Cols
    Dim dr As DataRow = DataTables("尺码档案").Find("[尺码名称] = '" & c.Caption & "'")
    Dim wz As Integer = t.FindRow(dr)
    If wz > -1 Then
        Names(wz) = c.Name
    End If
Next
For i As Integer = 0 To Names.Length -1
    s & = "|" & Names(i) & "|-1"
Next
t.SetColVisibleWidth("单号|-1" & s & "|备注|-1")

[此贴子已经被作者于2011-9-14 12:34:37编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 1:57:00 [显示全部帖子]

奇怪,楼上的代码有一处明显是错误的,怎么会得出正确结果?

老六能解其原因吗?


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 12:38:00 [显示全部帖子]

再顶老六看看。

25楼红色t为Table为“窗口1_Table1”,为什么能返回正确值?百思不得其解。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 13:04:00 [显示全部帖子]

另外我认为SetColVisibleWidth还是有瑕疵的,比如分别执行下面的两行代码,就会出现问题。当然这主要原因设置出了问题,设置出问题后出现这种现象正不正常,值得商榷

 

Tables("表A").SetColVisibleWidth("第一列|80||80|第二列|80|第三列|80")

Tables("表A").SetColVisibleWidth("|80|第二列|80|第三列|80")


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 16:26:00 [显示全部帖子]

以下是引用ybil在2011-9-14 13:13:00的发言:
Dim t As Table = Tables("窗口1_Table1")
Dim t1 As Table = Tables("尺码档案")
.....
確實耐人尋味:t.FindRow(dr)和t1.FindRow(dr)得到的結果一樣!

請教C版:
t.SetColVisibleWidth("单号|-1|备注|-1")中,"-1"作何解?默認列寬?最小列寬?

 

-1为默认宽度


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 16:29:00 [显示全部帖子]

以下是引用ybil在2011-9-14 13:24:00的发言:

呵呵,C版這個例子特例點,這樣可能好點:

Tables("A").SetColVisibleWidth("|第一列|80|第二列|80|第三列|80")

動態合成SetColVisibleWidth的字符串有時也不是吹灰

 

这个问题其实发现很长时间了,只是借这个贴来说明一下。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 16:33:00 [显示全部帖子]

以下是引用mr725在2011-9-14 13:48:00的发言:

t.FindRow(dr) 只要Tables("窗口1_Table1")中的行数足够(比列数多)就没有问题,因为Dim wz As Integer = t.FindRow(dr)只是要个行号而已。

 

关键是Names(wz) = c.Name 怎么Names(wz) 到


For i As Integer = 0 To Names.Length -1
    s & = "|" & Names(i) & "|-1"
Next

里面就能够自动排序了,我还没弄明白····


[此贴子已经被作者于2011-9-14 13:49:51编辑过]

 

wz是行号,Names是数组,是将取到的行号添加到数组集合中。

 

假设wz等于10,c.Name等于A,Names(wz) = c.Name,就是将名称为“A”添加到数组中第十一的位置。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/14 16:35:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-9-14 14:21:00的发言:

 

老曹,之所欲正确,纯属凑巧的,因为findrow只是根据_identify的值查找,t.FindRow(dr),就是先获得dr的_Identify的值,然后在t这个表中找出-Identify等于这个值的行的位置。

所以尽管dr不属于t表,也不会报错的,凑巧的话,结果也会正确。

 

哈哈,什么事都有可能,这次反正我是信了。


 回到顶部