0

使用 Visual Studio 和 VB.net,我有一个填充了数据的 gridview,并且基于下拉列表中的文本值,我想隐藏某些列并酌情取消隐藏。

下拉列表通过 sql 填充主题列表(英语、数学科学等)

网格包含的列包括 KS2 英语、KS2 数学和 KS2 平均三列。

从下拉列表中选择英语时,我想隐藏 KS2 Maths 和 KS2 Average 列。

选择数学时,我想隐藏 KS2 英语和 KS2 平均列。

最后,如果选择了任何其他科目,我想隐藏 KS2 英语和 KS2 数学列。

我已经使用基于下拉列表中的主题更新的数据填充了 gridview ok,但我不确定我需要做什么才能开始具体了解基于选择显示的列。

这是一个屏幕截图,应该可以清楚地说明我到目前为止所拥有的内容:

在此处输入图像描述

4

2 回答 2

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
于 2013-04-10T12:22:15.603 回答
1

我整理了一下。在页面加载时编写了以下过程:

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
于 2013-04-10T17:32:08.710 回答