Vb.net 屏蔽/更改datagridview中datagrid列的显示值

Vb.net 屏蔽/更改datagridview中datagrid列的显示值,vb.net,visual-studio-2012,datagridview,sql-server-2012,dataset,Vb.net,Visual Studio 2012,Datagridview,Sql Server 2012,Dataset,好了,伙计们,有个问题。我正在构建一个vb.NET Windows应用程序,用于输入和检索SQL Server 2012数据库中的数据。由于数据包含HIPPA元素,我必须(不可协商)能够根据需要(基于用户授权)隐藏/显示私人健康信息(PHI)。我通过创建一个持久化的shell表单,该表单带有一个面板,其他表单可以加载到该面板中。在shell中,我创建了一个按钮,用于设置要显示/隐藏的变量,以及一个例程,其他任何窗体都可以调用该例程,通过为特定窗体上的每个PHI字段设置passwordchar来显

好了,伙计们,有个问题。我正在构建一个vb.NET Windows应用程序,用于输入和检索SQL Server 2012数据库中的数据。由于数据包含HIPPA元素,我必须(不可协商)能够根据需要(基于用户授权)隐藏/显示私人健康信息(PHI)。我通过创建一个持久化的shell表单,该表单带有一个面板,其他表单可以加载到该面板中。在shell中,我创建了一个按钮,用于设置要显示/隐藏的变量,以及一个例程,其他任何窗体都可以调用该例程,通过为特定窗体上的每个PHI字段设置passwordchar来显示/隐藏各自的PHI字段。除了DataGridView之外,它对任何东西都非常有效。是否有任何方法可以对数据网格视图中的列执行类似操作(将显示值更改为类似于passwordchar的值,而不更改应用程序保存在数据集中的实际数据)

我意识到我可以在SQL数据库中创建一个视图,并在每次单击Show/Hide按钮时覆盖dataset表,但似乎应该有一种更优雅的方法来做到这一点。期待您的回复

以下是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窗体调用sub,以获取可以在shell窗体中加载到面板上的任何窗体。ShowPHI子对象中的“val”参数获取shell.chktaggrephi.Checked对象的当前值。

这里有一种方法:

  • 使用掩码(例如“****”)向数据集添加另一列
  • 为两列指定相同的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
    

  • 您有任何可以共享的代码吗?总之,通过一个界面,shell可以告诉任何子窗体根据shell按钮的选中状态激活其显示/隐藏PHI子窗体。如果要隐藏PHI,则会将每个PHI对象的passwordchar设置为*。如果要显示PHI,则将每个PHI对象的passwordchar设置为空字符串(显示PHI值)。问题是,我不知道如何在不覆盖dataset表中的基础值的情况下执行类似于datagridview的FirstName列的操作。在subjects datagridview的情况下,加载到数据集中的表是225k行,我不希望….为PHI字段拉一个带有屏蔽值的表的视图,然后将其处理并在新表中获取真实值(或者在系统内存中保留这两个版本)。并为这狭窄的代码道歉。不熟悉这些论坛,不知道如何使文本呈现换行符。最好是将评论中的信息以正确的格式添加到原始帖子中,以确保可读性。