Foxtable(狐表)用户栏目专家坐堂 → 关于列设置


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

主题:关于列设置

帅哥哟,离线,有人找我吗?
裴保民
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/21 23:07:00 [只看该作者]

甜老师我在“列设置此窗体”的AfterLoad事件中添加了加载数据条件并且在列设置表中也加入了“用户”列 运行后还是不行呢
Dim t As Table = e.form.Controls("Table1").Table
Dim lieming As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim s As String
Dim szlkdysx As WinForm.RadioButton = e.Form.Controls("shezhiliekuanyushunxu")
szlkdysx.Checked=True
e.Form.Controls("xiangyouButton").Enabled=True
e.Form.Controls("xiangzuoButton").Enabled=True
e.Form.Controls("yincangsuoxuanlie").Enabled=False
If sjdcxzb="客户资料窗体" Then
    t.DataSource =DataTables("客户资料")
    t.Filter = forms("客户资料窗体").Controls("Table1").Table.Filter
Dim fdr As DataRow = DataTables("列设置").Find("表名 = '" & t.Name & "'And  用户 ='" & User.Name &"'")
If fdr IsNot Nothing Then
    t.SetColVisibleWidth(fdr("设置"))
End If
    s = ""
    For Each c As Col In t.cols
        c.visible = True
        If  c.name = "电话1" OrElse c.name = "电话2" OrElse c.name = "电话3"  Then
            If User.Name = "abc" Then
                c.visible = False
            Else
                c.Visible = True
            End If
        End If
        If  c.name = "电话1掩码" OrElse c.name = "电话2掩码" OrElse c.name = "电话3掩码" Then
            If User.Name <> "开发者" AndAlso User.Name <> "管理员"  Then
                c.visible = False
            Else
                c.visible = True
            End If
        End If
    Next
    s = ""
    For Each c As Col In t.cols
        If c.visible Then
            s = s & "|" & c.name
        End If
    Next
    lieming.ComboList=s

'If sjdcxzb="客户资料窗体" Then
    't.DataSource =DataTables("客户资料")
    't.Filter = forms("客户资料窗体").Controls("Table1").Table.Filter
    't.SetColVisibleWidth(forms("客户资料窗体").Controls("Table1").Table.GetColVisibleWidth())
    's = ""
    'For Each c As Col In t.cols
    'If c.Visible Then
        's &= c.name & "|"
    'End If
   'Next
    'lieming.ComboList=s
ElseIf sjdcxzb="销售窗体" Then
    t.DataSource =DataTables("销售表")
    t.Filter =forms("销售窗体").Controls("Table1").Table.Filter
    t.SetColVisibleWidth(forms("销售窗体").Controls("Table1").Table.GetColVisibleWidth())
    s = ""
    For Each c As Col In t.cols
    If c.Visible Then
        s &= c.name & "|"
    End If
   Next
    lieming.ComboList=s
ElseIf sjdcxzb="出库窗体" Then
    t.DataSource =DataTables("出库表")
    t.Filter =forms("出库窗体").Controls("Table1").Table.Filter
    t.SetColVisibleWidth(forms("出库窗体").Controls("Table1").Table.GetColVisibleWidth())
    s = ""
    For Each c As Col In t.cols
    If c.Visible Then
        s &= c.name & "|"
    End If
   Next
    lieming.ComboList=s
End If
't.AllowDragColumn=False


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列设置.foxdb



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/21 23:32:00 [只看该作者]

客户窗口afterload事件

 

Dim t As Table = e.form.Controls("Table1").Table
Dim fdr As DataRow = DataTables("列设置").Find("表名 = '" & t.Name & "'And  用户 ='" & User.Name &"'")
If fdr IsNot Nothing Then
    t.SetColVisibleWidth(fdr("列设置"))

Else

    msgbox("没找到")
End If


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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/22 0:06:00 [只看该作者]

单击“客户资料窗体”中“列设置”按钮后打开“列设置窗体”中表不列设置的数据

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20190320001117.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20190321235935.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20190321235952.png
图片点击可在新窗口打开查看

1、这个程序唯一“客户表”比较特殊,客户表中有“电话1”、“电话2”、“电话3”、“电话1掩码”、“电话2掩码”、“电话3掩码”等字段,
2、(1)当登录程序的身份是“管理员”和“开发者”时“电话1”、“电话2”、“电话3”字段是显示状态,而“电话1掩码”、“电话2掩码”、“电话3掩码”字段是隐藏状态;(2)当登录程序的身份是“abc”时“电话1掩码”、“电话2掩码”、“电话3掩码”字段是显示状态,而“电话1”、“电话2”、“电话3”字段是隐藏状态。
3、进入程序后如果想利用程序中的"列设置窗体"设置列时,单击隐藏显示按钮后,根据登录角色,隐藏和显示“电话1”、“电话2”、“电话3”、“电话1掩码”、“电话2掩码”、“电话3掩码”字段,再设置剩余其他的字段,最后保存设置。
现在如果不不加任何条件和其他表一样进去“设置列窗体”单击显示隐藏列按钮后会出现不管是“管理员”和“开发者还是“abc”,“电话1”、“电话2”、“电话3”、“电话1掩码”、“电话2掩码”、“电话3掩码”字段不受限制的显示出来供用户来设置的,因为如果登录角色不是“管理员”和“开发者”是不允许“电话1”、“电话2”、“电话3”出现在CheckedListBox列表框中共用户设置这些列的,
经过以上设置后,到不到想要的结果,该怎么设置?具体方案是什么?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列设置.foxdb


[此贴子已经被作者于2019/3/22 7:35:35编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/22 11:47:00 [只看该作者]

1、根据不同的用户显示不同的列表啊,如

 

If user.name="xxx" then

 

elseIf user.name="yyy" Then

 

End If

 

2、根据自己的需求,不显示你对应的列出来

 

3、把设置后的结果,保存到表格里面,然后用 22楼的那种代码加载表列啊


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/22 11:48:00 [只看该作者]

如果你还不会的话,建议你重新学习foxtable基础语法,把基础打扎实了,再继续。现在你是连别人的代码都看不懂是什么意思,怎么开发?

 


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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/22 11:58:00 [只看该作者]

按照您的思路写的代码,运行还是异常

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/22 12:41:00 [只看该作者]

以下是引用裴保民在2019/3/22 11:58:00的发言:
按照您的思路写的代码,运行还是异常

 

1、现在你是显示【客户表】的时候有问题,还是设置的时候有问题?

 

2、如果是显示有问题,看22楼代码。如果写了代码还不对,就是你表格数据有问题;

 

3、如果是设置的时候显示有问题,请用 user.name 判断用户和现实设置的列。


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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/22 15:16:00 [只看该作者]

甜老师是显示不对,存储正常 操作员有时正常,管理员和开发者不正常,
还有一点就是更改列数据后必须重新打开客户资料窗体后才能更新列

下面是操作流程:
(1)以管理员的身份登录

图片点击可在新窗口打开查看此主题相关图片如下:登录.png
图片点击可在新窗口打开查看
(2)打开“客户资料窗体”原始数据

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

(3)单击“设置列”按钮后打开“设置列窗体”的“设置列宽度与顺序”界面,选择“显示与隐藏列”单选按钮,这时显示“姓名”、"性别"、“职业”、“年龄”列是未选中状态,其他列是未选中状态。和“客户资料窗体”中的表是一致的。

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
(4)这时不做任何操作直接单击“保存按钮”,这时“设置列窗体”的表和列表框都未更改可是“客户资料窗体”显示列已经改变为除了“电话1掩码”、“电话2掩码”、“电话3掩码”选中以外所有列显示,如下图

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
(5)重新打开“设置列窗体”选中“显示与隐藏列”按钮后显示除了“电话1掩码”、“电话2掩码”、“电话3掩码”是选中状态,其他列都是为选中状态,很明显这样是不对的,应该和第一次打开的一样才对呀,不知道什么原因?


图片点击可在新窗口打开查看此主题相关图片如下:重新1.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:重新2.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列设置.foxdb




麻烦给测试测试



[此贴子已经被作者于2019/3/24 16:46:37编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/24 16:48:00 [只看该作者]

怎么没回复?麻烦测试测试28楼
[此贴子已经被作者于2019/3/24 16:49:32编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/24 17:55:00 [只看该作者]

修改保存代码

 

Dim clist As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim szlxs As WinForm.RadioButton = e.Form.Controls("shezhiliekuanyushunxu")
Dim xsyycl As WinForm.RadioButton = e.Form.Controls("xianshiyuyincanglie")
If xsyycl.Checked Then
    For i As Integer = clist.Items.Count - 1 To 0 Step -1
        CurrentTable.Cols(clist.items(i)).Visible = not clist.GetItemChecked(i)
    Next
End If
Dim t As WinForm.Table = e.Form.Controls("Table1")
Dim fdr As DataRow = DataTables("列设置").Find("表名 = '" & t.Table.DataTable.Name & "'And  用户 ='" & User.Name &"'")
If fdr Is Nothing Then
    fdr = DataTables("列设置").AddNew
    fdr("表名") =t.Table.DataTable.Name
    fdr("用户") = User.Name
End If
fdr("列设置") = t.Table.GetColVisibleWidth
For Each dr As DataRow In DataTables("列设置").Select(" 用户 ='" & User.Name &"'")
    If Tables.Contains(dr("表名")) Then
        Tables(dr("表名")).SetColVisibleWidth(dr("列设置"))
    End If
Next


 回到顶部
总数 40 上一页 1 2 3 4 下一页