2012-04-02 95 views
2

我有一个网格视图。如果没有细节,我想让它说“你没有什么可表现的东西”。asp.net GridView如果空显示消息

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语句下面的各种组合,但没有成功。

回答

4

这更多的是一种增编伊卡洛斯的回答,增加一些背景的,为什么你的解决方案不起作用。 (为了教育目的)。

RowDataBound在Row被绑定到GridView时被调用。这基本上意味着这是为网格视图中的每一行调用的。

现在,您的解决方案无法正常工作的原因是,如果您的GridView根本没有任何内容,RowDataBound将调用而不是

当你有数据时,你得到'没有数据'的原因是因为第一次加载GridView时if语句运行时,GridView(在执行时)没有行,这是导致你的if语句为真。

只是要记住。

1

只是一个建议.. 而不是在看起来过时的gridview中显示“你什么也没有显示”,你为什么不看它? 你可以做

 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 

感谢

+0

有时,明确告诉用户没有找到结果是很好的;这取决于实际情况。 – 2013-03-02 14:38:14