【发布时间】: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