在选择情况下未触发asp gridview可见性

Posted

技术标签:

【中文标题】在选择情况下未触发asp gridview可见性【英文标题】:asp gridview visibility not triggered in select case 【发布时间】:2013-07-02 15:52:21 【问题描述】:

在 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】:

我不会为您的 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 的数据绑定方式有关(它可能仅在第一页加载时进行数据绑定,而不是在回发时)。

【讨论】:

以上是关于在选择情况下未触发asp gridview可见性的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net GridView 和 TemplateField 可见性 - false 但 ItemTemplate 仍在执行

OnCheckedChanged事件根本没有在GridView中触发

一页网站和 ASP GridView 回发问题

分页控件在 Gridview 中不可见

怎么触发gridview 的SelectedIndexChanged事件?

这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。 C#