我有一個ASP.NET 2.0(C#)的Web應用程序,並在其中我有一個從Oracle數據庫獲取其數據的GridView。如何檢查一個空Gridview
我想知道如何檢查gridview是否爲空,並做些什麼。
我已經嘗試:
if(GridView.Rows.Count == 0)
{
// Do Something
}
,但它不工作...
任何想法?
謝謝。
我有一個ASP.NET 2.0(C#)的Web應用程序,並在其中我有一個從Oracle數據庫獲取其數據的GridView。如何檢查一個空Gridview
我想知道如何檢查gridview是否爲空,並做些什麼。
我已經嘗試:
if(GridView.Rows.Count == 0)
{
// Do Something
}
,但它不工作...
任何想法?
謝謝。
您的代碼應該工作。但是隻有在調用GridView.DataBind()之後。一般來說,我不檢查它自己的GridView,而是網格視圖的數據源。
DataTable data = DAL.getdata();
if (data.Rows.Count == 0)
{
ShowEmptyData();
}
else
{
Grid.DataSource = dt;
Grid.DataBind();
}
如果您使用的是數據綁定,則數據源的行計數不是網格本身的計數。
這是行不通的,因爲GridView
是數據綁定的,並且在渲染頁面的同時將在稍後時間獲取實際數據。你應該通過直接查詢gridview的數據綁定源來查看它(查看網格視圖綁定的實際列表是否爲空)。
如果你只想當它是空的,顯示的東西,你應該在你的標記使用<EmptyDataTemplate>
:
<asp:GridView runat="server">
<EmptyDataTemplate>The grid is empty</EmptyDataTemplate>
</asp:GridView>
我同意其他答覆。我想補充的信息很少,你要經過數據綁定方法得到rows.count:
int rowCount = GridView.Rows.Count; // returns zero
GridView.DataBind();
rowCount = GridView.Rows.Count; // returns actual row count
只需更多信息:如果啓用了分頁,gridview將只顯示最大分頁行數。所以最好檢查實際數據源 – 2009-04-08 19:53:52
好點,謝謝。 – Canavar 2009-04-08 19:58:02
嗨@Canavar,只是想知道,如果 GridView.DataBind();是否可以不綁定到任何數據源? – 2014-05-27 11:42:40
它很容易:希望你的作品.. :)
GridView的數據綁定使用事件:這之後觸發數據是綁定的。
protected void GridView1_DataBound(object sender, EventArgs e)
{
int rowCount = GridView1.Rows.Count;
if (rowCount == 0)
{
GridView1.Visible = false;
}
else
{
GridView1.Visible = true;
}
}
不完全。 Row.Count包括任何頁眉和頁腳 – Fandango68 2017-03-24 01:33:16
如果你已經配置了你GV自動抓取數據從數據庫中的數據,那麼你還可以添加以下線路上,GV的第一個語句源代碼模式:
<EmptyDataTemplate>No data found.</EmptyDataTemplate>
然後繼續使用GV中的正常代碼。
首先創建一個輔助類。
public static class GridViewExtensions
{
public static IEnumerable<GridViewRow> AsEnumerable(this GridView grid)
{
foreach (GridViewRow row in grid.Rows)
{
yield return row;
}
}
public static bool IsEmpty(this GridView grid)
{
return !grid.AsEnumerable().Any(t => t.RowType == DataControlRowType.DataRow);
}
}
然後,只需根據答案已經爲IsEmpty
GridView1.IsEmpty()
你有可能重寫VS2005的這個機會嗎? – Fandango68 2017-03-24 01:32:49
打電話,GridView.Rows.Count
是夠不上自己的,這取決於你GridView
的性質,特別是如果它是一個動態的貨車,在大多數情況下它是,再加上你必須考慮Paginating
,頁眉和頁腳,這會改變行數。
我用一個簡單的方法告訴我......
//checks if a gridview has any actual rows of data (not just blank rows filled in by the Load
protected bool gvNoData(GridView gv)
{
int wsDataRow = 0;
foreach (GridViewRow gvRow in gv.Rows)
if (gvRow.RowType == DataControlRowType.DataRow)
{
HiddenField hf = (HiddenField)gvRow.FindControl("hfStudentID");
if (hf != null)
if (hf.Value.ToString().Length > 0)
wsDataRow +=1;
}
//if a count was generated then there are data rows, otherwise the rows are blank or nonexistant
if (wsDataRow > 0) return false;
else return true;
}
所以運行這樣會告訴你,如果該行真的是「 ‘DATA’行,或空或沒有!
顯然,在我來說,我有一個HiddenField如果GridViewRow告訴我是一個實際的數據行,因爲我我的預填空白行(對於我而言)和一些數據行的GridView。
然而,一個更簡單的版本基礎上的DataRow VS HeaderRow,等檢查...
foreach (GridViewRow gvRow in myGridView.Rows)
if (gvRow.RowType == DataControlRowType.DataRow)
{
//do what you need
}
我希望這可以幫助。
總之,沒有GridView.IsEmpty()函數不幸的是,除非你如下所示枚舉之一。
+1 -The EmptyDataTemplate是最優雅的解決方案恕我直言 – 2009-04-08 20:30:30
+1您也可以使用EmptyDataText屬性 – 2009-04-09 13:10:33