標籤:
2015年7月14日16:50:06 Gridview 預設展示資料時,若資料為空白,則表格不顯示,顯示不美觀。
針對此問題進行擴充:
using System.Web.UI.WebControls;public static class GridViewExtension{ public static void BindEmptyData(this GridView g) { if (g.Rows.Count == 0) { //表頭的設定 GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal); foreach (DataControlField field in g.Columns) { TableCell cell = new TableCell(); cell.Text = field.HeaderText; cell.Width = field.HeaderStyle.Width; cell.Height = field.HeaderStyle.Height; cell.ForeColor = field.HeaderStyle.ForeColor; cell.Font.Size = field.HeaderStyle.Font.Size; cell.Font.Bold = field.HeaderStyle.Font.Bold; cell.Font.Name = field.HeaderStyle.Font.Name; cell.Font.Strikeout = field.HeaderStyle.Font.Strikeout; cell.Font.Underline = field.HeaderStyle.Font.Underline; cell.BackColor = field.HeaderStyle.BackColor; cell.VerticalAlign = field.HeaderStyle.VerticalAlign; cell.HorizontalAlign = field.HeaderStyle.HorizontalAlign; cell.CssClass = field.HeaderStyle.CssClass; cell.BorderColor = field.HeaderStyle.BorderColor; cell.BorderStyle = field.HeaderStyle.BorderStyle; cell.BorderWidth = field.HeaderStyle.BorderWidth; row.Cells.Add(cell); } TableItemStyle headStyle = g.HeaderStyle; TableItemStyle emptyStyle = g.EmptyDataRowStyle; emptyStyle.Width = headStyle.Width; emptyStyle.Height = headStyle.Height; emptyStyle.ForeColor = headStyle.ForeColor; emptyStyle.Font.Size = headStyle.Font.Size; emptyStyle.Font.Bold = headStyle.Font.Bold; emptyStyle.Font.Name = headStyle.Font.Name; emptyStyle.Font.Strikeout = headStyle.Font.Strikeout; emptyStyle.Font.Underline = headStyle.Font.Underline; emptyStyle.BackColor = headStyle.BackColor; emptyStyle.VerticalAlign = headStyle.VerticalAlign; emptyStyle.HorizontalAlign = headStyle.HorizontalAlign; emptyStyle.CssClass = headStyle.CssClass; emptyStyle.BorderColor = headStyle.BorderColor; emptyStyle.BorderStyle = headStyle.BorderStyle; emptyStyle.BorderWidth = headStyle.BorderWidth; //空白行的設定 GridViewRow row1 = new GridViewRow(0, -1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal); TableCell cell1 = new TableCell(); cell1.Text = "沒有任何資料可以顯示"; cell1.ForeColor = System.Drawing.Color.Purple; cell1.BackColor = System.Drawing.Color.White; row1.Cells.Add(cell1); cell1.ColumnSpan = g.Columns.Count; if (g.Controls.Count == 0) { g.Page.Response.Write("<script language=‘javascript‘>alert(‘請先調用GridView的BindData()方法後 調用此擴充方法!‘);</script>"); } else { g.Controls[0].Controls.Clear(); g.Controls[0].Controls.AddAt(0, row); g.Controls[0].Controls.AddAt(1, row1); } } }}
代碼調用方式如下:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } protected void BindData() { this.grid_PlantVarietyRight.DataBind(); this.grid_PlantVarietyRight.BindEmptyData(); }
顯示效果如
本擴充主要參考 http://www.cnblogs.com/muer/archive/2010/03/26/1697178.html 稍作擴充,感謝這位哥。
擴充:gridview 空資料時顯示表頭