2012-04-02 2 views
2

私はグリッドビューを持っています。詳細がない場合は、「あなたは何も表示していません」と言いたいと思います。asp.net GridView IF empty showメッセージ

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文でさまざまな組み合わせを試みましたが、成功しませんでした。

答えて

10

代わりに、EmptyDataTemplateを使用します。

<emptydatatemplate> 
     No Data Found. 
    </emptydatatemplate> 
+0
+0

すごいので、簡単な操作を行うことができます!ありがとうございました:) – user1055487

4

これはあなたのソリューションが動作しない理由として、コンテキストのビットを追加し、イカルスの答えに補遺の詳細です。 (教育目的のために)。

RowDataBoundは、Rowがグリッドビューにバインドされているときに呼び出されます。これは、基本的には、グリッドビューのすべての行で呼び出されることを意味します。

解決策が機能しない理由は、GridViewに何もない場合、RowDataBoundはでなく、となります。

データがあるときに「データが見つかりません」という理由は、GridViewをロードするときに最初にifステートメントが実行され、GridView(実行時に)に行がないためです。 if文が真となります。

覚えておいてください。

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 

おかげで、それを私にビート

+0

結果が見つからなかったことをユーザーに明示的に伝えるのが良いこともあります。それは状況によって異なります。 –