2012-04-02 93 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