asp.net GridView IF空显示消息

时间:2012-04-02 19:01:40

标签: asp.net vb.net

我有一个网格视图。如果没有细节,我希望它说“你没有什么可展示的”。

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound


    If GridView1.Rows.Count = 0 Then
        Lblemptygridview.Text = "you do no details to show"

    Elseif e.Row.RowType = DataControlRowType.DataRow then
        Dim datakey As String = GridView1.DataKeys(e.Row.RowIndex).Value.ToString()

    End If


End Sub

然而;当网格视图中没有要显示的数据时,它似乎正在向后工作并在网格视图中显示数据时显示消息,并且仍然是空白页面。

我尝试了以下IF语句的各种组合,但没有成功。

3 个答案:

答案 0 :(得分:11)

相反,请使用EmptyDataTemplate

 <emptydatatemplate>
        No Data Found.  
    </emptydatatemplate> 

答案 1 :(得分:4)

这更像是对Icarus答案的补充,为你的解决方案无效的原因增加了一些背景。 (用于教育目的)。

当Row绑定到gridview时调用RowDataBound。这基本上意味着为网格视图中的每一行调用它。

现在,您的解决方案不起作用的原因是,如果您的GridView中没有任何内容,RowDataBound将被调用。

当你有数据时,你得到'No Data Found'的原因是因为第一次在加载GridView时运行if语句,GridView(在执行时)没有Rows,结果在你的if语句中是真的。

要记住一些事情。

答案 2 :(得分:1)

只是一个建议.. 而不是在看起来过时的网格视图中显示“你没有任何东西可以显示”,为什么不让它变得花哨? 你可以做到

        Dim dt As DataTable = getDatatable()

        If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then
            GridView1.datasource = dt
            GridView1.databind()
            div.style.add("display", "none")
        Else
            GridView1.visible = False
            'Add some fancy style here to show no record
            div.style.add("display", "block")
        End If

感谢