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.DataGridViewEditingControlShowingEventArgsComboBox 你是否在你的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

根据所选列中的文本调整行高

如何根据特定条件隐藏/显示下拉列表项?

使用 VB.Net 2 读取和写入文本文件中的特定行

根据另一个字段中的选择显示/隐藏 django 管理表单字段

如何按 MS Access 的特定月份汇总特定列数据并进入 vb.net 中的文本框