GridView空记录时显示Header和Footer
也有段日子沒寫什么東西了,也是因為以前閑了好長時間,最近一下又有活干了,也不是什么新任務,還是接著原來沒做完的工作重新設計和動工,對原來做好的曲線圖形開發一個常用屬性的設置,普通用戶就可以通過頁面對圖形顯示的效果簡單修改,而不單單只是程序員在程序的控件中修改。
說實話具體的工作也沒多大難度,主要在問題就在此維護工具的界面的設計和程序架構設計,一旦這方面做不好,后期進行擴展將會存在大量問題,有可能需要重新設計和開發,核心也是由于項目組中沒有經驗豐富的人帶領,所以自己和其余幾個人做的都很頭大。
維護工具界面主要采用GridView進行數據的增、刪、改、顯示,并且所有的數據都保存在Xml文件中,沒有采用數據庫對數據進行存儲,所以Xml配置文件的設計需要合理的格式。
看到標題,大家也會明白GridView中采用了模板列
<ItemTemplate> 用于顯示數據控件Label
<EditItemTemplate> 用于編輯和保存的時候顯示控件,根據所需選擇
<FooterTemplate> 用于增加的時候顯示的控件,根據所需選擇
大家都應該清楚,在沒有數據的時候,GridView是不顯示的,只會顯示EmptyDataText里填寫了文本。在真正做的時候確遇到了相當多問題,有記錄的時候增、刪、改功能不會存在什么問題,一旦沒記錄原本想讓顯示Header和Footer,但是結果卻是什么都不顯示,也試了好多方法,結果都不令人滿意,比如:可以創建一個DataTable,添加一條空記錄,重新對GridView進行填充和綁定,這樣雖然顯示了Header和Footer,但是空記錄也隨之顯示了,因為我之前我給GridView增加了一列自增編號,此列就會顯示1。
代碼如下:
代碼 1 protected DataTable GetEmptyDataGrid()2 {
3 DataTable dt = new DataTable("Table1");
4 //沒有數據時模擬出一些原始數據綁定GridView
5 ? dt = new DataTable();
6 //dt.Columns.Add("id");
7 ? dt.Columns.Add("csmc");//參數名稱
8 ? dt.Columns.Add("csbl");//參數變量
9 ? dt.Columns.Add("cslx");//參數類型
10 ? dt.Columns.Add("sfjl");//是否級聯
11 ? dt.Columns.Add("mrz");//默認值
12 dt.Columns.Add("sql");//SQL填充
13 DataRow dr = dt.NewRow();
14 dt.Rows.Add(dr);
15 dt.AcceptChanges();
16 return dt;
17 }
?
經過自己的不懈努力和網上的資料,最后總算是找到了一個解決方法,也達到了想要的結果。
在GridView的PreRender事件中,判斷 Rows.Count 是否等于0,再執行函數renderEmptyGridView函數,這樣也就實現了新增的功能。
具體代碼如下:
代碼 1 protected void GridView1_PreRender(object sender, EventArgs e)2 {
3 if (GridView1.Rows.Count == 0)
4 {
5 renderEmptyGridView(GridView1, "csmc, csbl, cslx, sfjl, mrz, sql");
6 }
7 }
8 public static void renderEmptyGridView(GridView EmptyGridView, string FieldNames)
9 {
10 //將GridView變成只有Header和Footer列,以及被隱藏的空白資料列
11 DataTable dTable = new DataTable();
12 char[] delimiterChars = {','};
13 string[] colName = FieldNames.Split(delimiterChars);
14 foreach (string myCol in colName)
15 {
16 DataColumn dColumn = new DataColumn(myCol.Trim());
17 dTable.Columns.Add(dColumn);
18 }
19 DataRow dRow = dTable.NewRow();
20 foreach (string myCol in colName)
21 {
22 dRow[myCol.Trim()] = DBNull.Value;
23 }
24 dTable.Rows.Add(dRow);
25 EmptyGridView.DataSourceID = null;
26 EmptyGridView.DataSource = dTable;
27 EmptyGridView.DataBind();
28 EmptyGridView.Rows[0].Visible = false;
29 }
?
?
在此感謝此人的帖:http://hi.baidu.com/fancyaj/blog/item/13ce292e05283d584fc2265c.html
如果大家還有其它什么好的方法,歡迎留言,共同進步~~~
?
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的GridView空记录时显示Header和Footer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迷你世界猪怎么驯服(24期迷你世界一)
- 下一篇: CString,string,char数