【问题标题】:Mask/alter displayed values from a datagrid column in a datagridview屏蔽/更改数据网格视图中数据网格列的显示值
【发布时间】:2015-04-09 14:25:02
【问题描述】:

好的,伙计们,有一个问题。我正在构建一个 vb.NET Windows 应用程序来输入和检索 SQL Server 2012 数据库中的数据。因为数据包含 HIPPA 元素,所以我需要(不可协商)能够按需隐藏/显示私人健康信息 (PHI)(基于用户授权)。我通过创建一个带有面板的持久外壳表单来实现这一点,其他表单可以加载到该面板中。在 shell 中,我创建了一个将变量设置为显示/隐藏的按钮,以及一个可以由任何其他表单调用的例程,通过为该特定表单上的每个 PHI 字段设置密码字符来显示/隐藏其各自的 PHI 字段。它适用于一切,除了 DataGridViews。有没有办法对数据网格视图中的列执行类似的操作(将显示值更改为类似于密码字符的内容,而不更改应用程序在数据集中保存的实际数据)?

我意识到我可以在 SQL 数据库中创建一个视图并在每次单击“显示/隐藏”按钮时覆盖数据集表,但似乎应该有一种更优雅的方式来执行此操作。期待您的回复。

下面是 shell 表单中隐藏/显示 PHI 复选框(按钮类型)的代码:

Private Sub chkTogglePHI_CheckedChanged(sender As Object, e As EventArgs) Handles chkTogglePHI.CheckedChanged 

    WorkingAreaForm.ShowPHI(chkTogglePHI.Checked)
    HeaderForm.ShowPHI(chkTogglePHI.Checked)

    If chkTogglePHI.Checked = False Then 
        chkTogglePHI.Text = "Show PHI"
    Else 
        chkTogglePHI.Text = "Hide PHI"
    End If

End Sub

下面是子表单调用的代码示例:

Public Sub ShowPHI(val As Boolean) Implements IFormMethods.ShowPHI
    If val = False Then
        txtFirstName.PasswordChar = ""
        txtMI.PasswordChar = ""
        txtLastName.PasswordChar = ""
    Else
        txtFirstName.PasswordChar = "*"
        txtMI.PasswordChar = "*"
        txtLastName.PasswordChar = "*"
    End If 
End Sub

此代码适用于任何包含 PHI 的文本框,但我不知道在 datagridview 中显示的屏蔽/取消屏蔽 PHI 列的等效项。

iFormMethods 只是一个接口,它允许 shell 表单调用子程序,以便在 shell 表单中加载到面板上的任何表单。 ShowPHI 子程序中的“val”参数获取 shell.chkTagglePHI.Checked 对象的当前值。

【问题讨论】:

  • 你有什么代码可以分享吗?
  • 底线,通过一个界面,shell 可以告诉任何子窗体根据 shell 按钮检查状态激活它的显示/隐藏 PHI 子。如果要隐藏 PHI,则将每个 PHI 对象的密码字符设置为 *。如果要显示 PHI,它会将每个 PHI 对象的密码字符设置为空字符串(显示 PHI 值)。问题是,我不知道如何在不覆盖数据集表中的基础值的情况下执行类似于 datagridview 的 FirstName 列的操作。在主题 datagridview 的情况下,加载到数据集中的表是 225k 行,我宁愿不......
  • ...使用 PHI 字段的屏蔽值拉取该表的视图,然后将其处理并在新表中获取实际值(或将两个版本都保存在系统内存中)。并为狭窄的代码道歉。这些论坛的新手,不知道如何使文本呈现换行符。
  • 最好将 cmets 中的信息添加到原始帖子中,格式正确,便于阅读。

标签: vb.net visual-studio-2012 datagridview sql-server-2012 dataset


【解决方案1】:

这是一种方法:

  1. 使用掩码向数据集添加另一列(例如“*****”)
  2. 为两列赋予相同的 HeaderText 值,并隐藏其中一列或 其他基于 PHI 字段的值,如下所示:

    Public Sub ShowPHI() Implements IFormMethods.ShowPHI
      MyGrid.Columns("realNameColumn").Visible = Not shell.chkTagglePHI.Checked
      MyGrid.Columns("hiddenNameColumn").Visible = shell.chkTagglePHI.Checked
    End Sub
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2015-04-10
    相关资源
    最近更新 更多