今天在做網頁時,發現gridview中的資料來源為空白時,它不顯示,於是就想,能不能讓它在沒有資料來源的時候也顯示呢?
於是就在網上找資料,找到了很多,但大部分的都寫得比較複雜,經過我不懈的努力,終於找到了幾條看似比較簡單的代碼,經過我的修改和驗證,效果出來了,現在把這些代碼總結一下,一是留給自己的,二是方便其它人。
方法一:通過在CS中寫代碼來實現
sda.Fill(ds, "titles"); //這裡的titles是指表名
DataTable dt = new DataTable();
dt.Columns.Add("title");
dt.Columns.Add("type");
dt.Columns.Add("pub_id");
dt.Columns.Add("price");//title,type,pub_id,price都是列名
if (dt.Rows.Count == 0) //判斷表中的行數,如果為0,表示沒有找到,即資料來源為空白
{
dt.Rows.Add(dt.NewRow());//添加一條新的空白行
}
GridView1.DataSource = dt;
GridView1.DataBind();
int columncount = dt.Columns.Count; //有多少列
GridView1.Rows[0].Cells.Clear(); //給第一行的每列清零
GridView1.Rows[0].Cells.Add(new TableCell());
GridView1.Rows[0].Cells[0].ColumnSpan = columncount;//跨列數
GridView1.Rows[0].Cells[0].Text = "No Record Found!";
GridView1.Rows[0].Cells[0].Style.Add("text-align", "center");
方法二:在源中表示
方法很簡單:就是先運行有資料的gridview,然後查看編譯的頁面的“查看源檔案” 把裡面產生的table的樣式摳出來,放到 <EmptyDataTemplate> </EmptyDataTemplate>。
這樣還沒完,還有二步:第一步:在<table></table>中,保留第一二行,其它的行都刪除。第一行的內容不變,第二行合并成一個儲存格,並在此儲存格裡寫上“沒有找到記錄”這樣的資訊。位置隨你,本人喜歡讓其置中
第二步:回到CS檔案,把原來能查到資料的sql語句改一下,改成不能尋找資料的sql語句。
方法三:如果不用EmptyDataTemplate模板,可以設定GridView 的EmptyDataText屬性,這樣只顯示一句話和一個邊框
本人覺得不是很好看。雖然簡單,不太喜歡!
此時,大功告成!
附:第二種方法其實是以表格的方式顯示沒有資料來源時的資訊,從表面上看去像顯示了gridview的資訊,其實不是。這就要求大家將表格的樣式最好設定得和gridview的樣式一樣,讓外人看不出破綻。呵呵!