VB.Net根据下拉文本选择隐藏特定的gridview列
Posted
技术标签:
【中文标题】VB.Net根据下拉文本选择隐藏特定的gridview列【英文标题】:VB.Net hide specific gridview columns based on dropdown text selection 【发布时间】:2013-04-10 11:36:33 【问题描述】:使用 Visual Studio 和 VB.net,我有一个填充了数据的 gridview,并且基于下拉列表中的文本值,我想隐藏某些列并酌情取消隐藏。
下拉列表通过 sql 填充主题列表(英语、数学科学等)
网格包含列,包括 KS2 英语、KS2 数学和 KS2 平均三列。
当从下拉列表中选择英语时,我想隐藏 KS2 数学和 KS2 平均列。
选择数学时,我想隐藏 KS2 英语和 KS2 平均列。
最后,如果选择了任何其他科目,我想隐藏 KS2 英语和 KS2 数学列。
我已经用根据下拉列表中的主题更新的数据填充了 gridview,但我不确定我需要做什么才能开始具体了解根据选择显示的列。
这是一个屏幕截图,应该可以清楚地说明我到目前为止所拥有的:
【问题讨论】:
【参考方案1】:试试这个代码:
它用于添加处理程序
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If TypeOf e.Control Is ComboBox Then
AddHandler CType(e.Control, ComboBox).SelectedIndexChanged, AddressOf LastColumnComboSelectionChanged
End If
End Sub
它用于可见的假列
Private Sub LastColumnComboSelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
DataGridView1.Columns(5).Visible = True
DataGridView1.Columns(4).Visible = True
DataGridView1.Columns(3).Visible = True
If sender.SelectedItem = "Maths" Then
DataGridView1.Columns(2).Visible = False
DataGridView1.Columns(4).Visible = False
ElseIf sender.SelectedItem = "English" Then
DataGridView1.Columns(3).Visible = False
DataGridView1.Columns(4).Visible = False
ElseIf sender.SelectedItem = "others" Then
DataGridView1.Columns(3).Visible = False
DataGridView1.Columns(4).Visible = False
DataGridView1.Columns(2).Visible = False
End If
End Sub
【讨论】:
谢谢。我已经在我的项目中实现了这一点,并在网格视图、下拉列表和列位置的适当控件中进行了替换,但是我收到错误,提示未定义类型System.Windows.Forms.DataGridViewEditingControlShowingEventArgs
和 ComboBox
。
你是否在你的datagridview中添加了datagridviewcomboxcolumn。你在winforms或web中工作
感谢@SATSON。我添加了一个屏幕截图,希望能让事情更清楚。我在 web 表单中有一个单独的下拉列表和 gridview 控件。
感谢@SATSON,您的建议为我指明了正确的方向。【参考方案2】:
我整理好了。在页面加载时编写了以下程序:
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
GvStudentDetails.Columns(17).Visible = False
GvStudentDetails.Columns(18).Visible = False
End Sub
以及我的下拉选择过程中的以下选择案例语句:
Protected Sub DdlSubject_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubject.SelectedIndexChanged
Select Case strSubject
Case "English"
GvStudentDetails.Columns(16).Visible = True
GvStudentDetails.Columns(17).Visible = False
GvStudentDetails.Columns(18).Visible = False
Case "Mathematics"
GvStudentDetails.Columns(16).Visible = False
GvStudentDetails.Columns(17).Visible = True
GvStudentDetails.Columns(18).Visible = False
Case Else
GvStudentDetails.Columns(16).Visible = False
GvStudentDetails.Columns(17).Visible = False
GvStudentDetails.Columns(18).Visible = True
End Select
End Sub
【讨论】:
以上是关于VB.Net根据下拉文本选择隐藏特定的gridview列的主要内容,如果未能解决你的问题,请参考以下文章
Ext 表单隐藏 和显示 根据下拉框选择不同的值 显示不同的文本框 只显示了文本框没有显示fieldLabel