我有一个网格视图。如果没有细节,我希望它说“你没有什么可展示的”。
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语句的各种组合,但没有成功。
答案 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
感谢