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


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

主题:关于列设置

帅哥哟,离线,有人找我吗?
裴保民
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | 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



 回到顶部
帅哥哟,离线,有人找我吗?
裴保民
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
裴保民
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
裴保民
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/24 19:21:00 [显示全部帖子]

甜老师,以开发者的身份进去,保存后是显示和隐藏的列怎么不符合呢?
选择的列和操作后的结果咧不符合
更改前:

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

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




如果登录的身份是“abc”就正常,是怎么回事?
[此贴子已经被作者于2019/3/24 19:39:41编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/25 18:52:00 [显示全部帖子]

For Each dr As DataRow In DataTables("列设置").Select(" 用户 ='" & User.Name &"'")  甜老师这句代码是不是得同时判断用户和表名呀?
    If Tables.Contains(dr("表名")) Then
        Tables(dr("表名")).SetColVisibleWidth(dr("列设置"))
    End If
Next



改为下面代码代码:

For Each dr As DataRow In DataTables("列设置").Select(" 表名 ='" & dr("表名") &"'And  用户 ='" & User.Name &"'") 
    If Tables.Contains(dr("表名")) Then
        Tables(dr("表名")).SetColVisibleWidth(dr("列设置"))
    End If
Next

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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/3/27 10:57:00 [显示全部帖子]

在“复选列表框”的ItemCheck事件写了如下代码 运行后发现,只要有隐藏列存在,在选择“复选列表框”的值的时候,选择的列就和数据表中的列不一致,看看哪错了

Dim tzsx As WinForm.RadioButton = e.Form.Controls("tiaozhengliedeshunxuRadioButton")
If tzsx.Checked Then
If e.Checked Then
    Dim cst As WinForm.CheckedListBox = e.sender
    For i As Integer = 0 To cst.Items.count - 1
        If i <> e.Index Then
            cst.SetItemChecked(i, False)
        End If
    Next
End If
End If
Dim t As Table = e.Form.controls("Table1").Table
If t.rows.count > 0 Then
t.Select(0,e.Index)
t.LeftVisibleCol = e.Index
End If


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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/4/14 10:46:00 [显示全部帖子]

在“列的显示与隐藏”单选框写了如下代码'运行后发现“lieCheckedListBox”控件中加载两边字段呢?


Dim ldsxyyc As WinForm.RadioButton = e.Form.Controls("ldxsyycRadioButton")
Dim liexz As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
Dim t As WinForm.Table = e.Form.Controls("Table1")
Dim str As String = ""
If ldsxyyc.Checked=True Then
    e.Form.Controls("tzlsxGroupBox").Enabled=False
    e.Form.Controls("ycyxslGroupBox").Enabled=True
    e.Form.Controls("sjldczGroupBox").Enabled=True
    liexz.Value =""
    liexz.SelectedValue=""
End If
liexz.CheckOnClick=True
Dim dtshb As WinForm.Table = e.Form.Controls("Table1")
For Each c As Col In t.Table.Cols
    If t.Table.DataTable.Name ="客户资料" Then
        If _UserGroup ="系统管理员" OrElse _UserGroup = "数据管理员"   Then
            If c.name <>"身份证号掩码显示" AndAlso c.name <> "客户主手机号掩码显示" AndAlso c.name <> "第二手机号掩码显示"  AndAlso  c.name <> "第三手机号掩码显示" Then
                str &= c.name & "|"
            End If
        ElseIf  _UserGroup = "数据操作员"
            If c.name <> "身份证号" AndAlso c.name <> "客户主手机号" AndAlso  c.name <>"第二手机号" AndAlso c.name <> "第三手机号"  Then
                str &= c.name & "|"
            End If
        End If
    Else
        str &= c.name & "|"
    End If
Next
e.Form.Controls("lieCheckedListBox").ComboList = str.trim("|")

Dim ary = str.split("|")
Dim clist As WinForm.CheckedListBox = e.Form.Controls("lieCheckedListBox")
For Each c As Col In t.Table.Cols
    If t.Table.DataTable.Name ="客户资料" Then
        If _UserGroup ="系统管理员" OrElse _UserGroup = "数据管理员"   Then
            If c.name <>"身份证号掩码显示" AndAlso c.name <> "客户主手机号掩码显示" AndAlso c.name <> "第二手机号掩码显示"  AndAlso  c.name <> "第三手机号掩码显示" Then
                Dim i = array.Indexof(ary, c.name)
                liexz .SetItemChecked(i, not c.Visible)
            End If
        ElseIf  _UserGroup = "数据操作员"
            If c.name <> "身份证号" AndAlso c.name <> "客户主手机号" AndAlso  c.name <>"第二手机号" AndAlso c.name <> "第三手机号"  Then
                Dim i = array.Indexof(ary, c.name)
                liexz .SetItemChecked(i, not c.Visible)
            End If
        End If
    Else
        Dim i = array.Indexof(ary, c.name)
        If i >= 0 Then
            liexz .SetItemChecked(c.Index, not c.Visible)
        End If
    End If
Next


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


加好友 发短信
等级:八尾狐 帖子:1989 积分:12631 威望:0 精华:0 注册:2017/4/3 15:01:00
  发帖心情 Post By:2019/4/15 8:46:00 [显示全部帖子]

在“复选列表框”的ItemCheck事件写了如下代码 运行后发现,只要有隐藏列存在,在选择“复选列表框”的值的时候,选择的列就和数据表中的列不一致,看看哪错了

Dim t As Table = e.Form.controls("Table1").Table
Dim ldxsyyc As WinForm.RadioButton = e.Form.Controls("ldxsyycRadioButton")
Dim szldkdysx As WinForm.RadioButton = e.Form.Controls("szldkdysxRadioButton")
If szldkdysx.Checked Then
t.Select(0, e.Sender.SelectedIndex)
t.LeftVisibleCol = e.Sender.SelectedIndex
    If e.Checked Then
        Dim cst As WinForm.CheckedListBox = e.Sender
        For i As Integer = 0 To cst.Items.count - 1
            If i <> e.Index Then
              cst.SetItemChecked(i, False)
            End If
        Next
    End If
ElseIf ldxsyyc.Checked Then
    Return
End If
If t.rows.count > 0 Then
    t.Select(0,e.Index)
    t.LeftVisibleCol = e.Index
End If
[此贴子已经被作者于2019/4/15 8:46:16编辑过]

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