在特定情况下未触发asp gridview可见性

时间:2013-07-02 15:52:22

标签: asp.net vb.net gridview drop-down-menu select-case

在vb asp.net webform中,我在gridview数据绑定过程中有一个select case语句,它基于存储在变量中的下拉列表中的值。

Protected Sub gvProgressGrid_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvProgressGrid.DataBound
    Dim strYear As String = DdlYear.Text
     Select Case strYear
        Case 11
            gvProgressGrid.Visible = True
        Case 10
            gvProgressGrid.Visible = True
        Case 9
            gvProgressGrid.Visible = True
        Case 8
            gvProgressGrid.Visible = False
        Case 7
            gvProgressGrid.Visible = False
    End Select
End Sub

默认情况下会显示gridview,当我从下拉列表中选择7或8时,gridview会消失。但是,如果我选择9-11就会消失,那么网格就不会再出现了。

1 个答案:

答案 0 :(得分:0)

我不会使用您的Gridview的Databound事件,而是使用DropDownList的SelectedIndexChanged事件来容纳这个逻辑:

Protected Sub DdlYear_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DdlYear.SelectedIndexChanged
    Dim strYear As String = DdlYear.Text
    Select Case strYear
        Case 11
            gvProgressGrid.Visible = True
        Case 10
            gvProgressGrid.Visible = True
        Case 9
            gvProgressGrid.Visible = True
        Case 8
            gvProgressGrid.Visible = False
        Case 7
            gvProgressGrid.Visible = False
    End Select
End Sub

这在语义上更有意义,因为结果取决于下拉列表的值(DdlYear.Text)。

它也可能更正确地运行,因为我想这个问题与你的GridView是如何数据绑定有关(它可能只在首页加载时数据绑定,而不是在回发上)。