Mask/alter 在数据网格视图中显示数据网格列的值
Mask/alter displayed values from a datagrid column in a datagridview
好的,伙计们,有个问题。我正在构建一个 vb.NET Windows 应用程序以从 SQL Server 2012 数据库输入和检索数据。由于数据具有 HIPPA 元素,我需要(不可协商)能够 Hide/Show 按需(基于用户授权)私人健康信息 (PHI)。我通过创建一个带有面板的持久性 shell 表单来实现这一点,其他表单可以加载到该面板中。在 shell 中,我创建了一个将变量设置为 Show/Hide 的按钮和一个可以由任何其他表单调用的例程,通过设置密码字符 Show/Hide 他们各自的 PHI 字段该特定表格上的每个 PHI 字段。它适用于除 DataGridViews 之外的所有内容。有什么方法可以对数据网格视图中的列执行类似的操作(将显示值更改为类似于 passwordchar 的内容,而不更改应用程序保存在数据集中的实际数据)?
我意识到我可以在 SQL 数据库中创建一个视图并在每次单击 Show/Hide 按钮时覆盖数据集 table,但似乎应该有一个更优雅的方式来做到这一点。期待您的回复。
这是 shell 表单中 Hide/Show 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 的文本框,但我不知道与数据网格视图中显示的 mask/unmask PHI 列等效的代码。
iFormMethods 只是一个接口,它允许 shell 表单为可能加载到 shell 表单面板上的任何表单调用子程序。 ShowPHI 子程序中的 "val" 参数获取 shell.chkTagglePHI.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
好的,伙计们,有个问题。我正在构建一个 vb.NET Windows 应用程序以从 SQL Server 2012 数据库输入和检索数据。由于数据具有 HIPPA 元素,我需要(不可协商)能够 Hide/Show 按需(基于用户授权)私人健康信息 (PHI)。我通过创建一个带有面板的持久性 shell 表单来实现这一点,其他表单可以加载到该面板中。在 shell 中,我创建了一个将变量设置为 Show/Hide 的按钮和一个可以由任何其他表单调用的例程,通过设置密码字符 Show/Hide 他们各自的 PHI 字段该特定表格上的每个 PHI 字段。它适用于除 DataGridViews 之外的所有内容。有什么方法可以对数据网格视图中的列执行类似的操作(将显示值更改为类似于 passwordchar 的内容,而不更改应用程序保存在数据集中的实际数据)?
我意识到我可以在 SQL 数据库中创建一个视图并在每次单击 Show/Hide 按钮时覆盖数据集 table,但似乎应该有一个更优雅的方式来做到这一点。期待您的回复。
这是 shell 表单中 Hide/Show 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 的文本框,但我不知道与数据网格视图中显示的 mask/unmask PHI 列等效的代码。
iFormMethods 只是一个接口,它允许 shell 表单为可能加载到 shell 表单面板上的任何表单调用子程序。 ShowPHI 子程序中的 "val" 参数获取 shell.chkTagglePHI.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