在网上找了很多,都出现了不同的问题,最后修改了一个版本,觉得好用,就拿出来共享下
1 #region 无数据显示表头
2 protected void OnlyShowGridViewHeader(GridView gv, DataTable dt)
3 {
4 if (dt.Rows.Count == 0)
5 {
6 dt.Rows.Add(dt.NewRow());
7 gv.DataSource = dt;
8 gv.DataBind();
9 foreach (TableCell cell in gv.Rows[0].Cells)
10 if (cell.HasControls())
11 foreach (Control ctrl in cell.Controls)
12 ctrl.Visible = false;
13 gv.Rows[0].Cells[0].Text = "";
14 //gv.Rows[0].Cells[gv.Columns.Count / 2-1].Text = "没有数据!";
15 }
16 }
17
18 protected void OnlyShowGridViewHeader(GridView gv, DataSet ds, string tableName)
19 {
20 OnlyShowGridViewHeader(gv, ds.Tables[tableName]);
21 }
22
23 protected void OnlyShowGridViewHeader(GridView gv, DataSet ds)
24 {
25 OnlyShowGridViewHeader(gv, ds.Tables[0]);
26 }
27 #endregion
2 protected void OnlyShowGridViewHeader(GridView gv, DataTable dt)
3 {
4 if (dt.Rows.Count == 0)
5 {
6 dt.Rows.Add(dt.NewRow());
7 gv.DataSource = dt;
8 gv.DataBind();
9 foreach (TableCell cell in gv.Rows[0].Cells)
10 if (cell.HasControls())
11 foreach (Control ctrl in cell.Controls)
12 ctrl.Visible = false;
13 gv.Rows[0].Cells[0].Text = "";
14 //gv.Rows[0].Cells[gv.Columns.Count / 2-1].Text = "没有数据!";
15 }
16 }
17
18 protected void OnlyShowGridViewHeader(GridView gv, DataSet ds, string tableName)
19 {
20 OnlyShowGridViewHeader(gv, ds.Tables[tableName]);
21 }
22
23 protected void OnlyShowGridViewHeader(GridView gv, DataSet ds)
24 {
25 OnlyShowGridViewHeader(gv, ds.Tables[0]);
26 }
27 #endregion
一定要在数据绑定后再调用这个方法,呵呵
1 public void gvCheckDataBind()
2 {
3 DataSet ds = new DataSet();
4 ds = chk.QueryChecksCommand(drpOperateMode.SelectedValue, key.Text.Trim(), gm1.Date.ToString(), gm2.Date.ToString(), 2);
5 gvChecks.DataSource=ds;
6 gvChecks.DataBind();
7 OnlyShowGridViewHeader(gvChecks, ds);
8 }
2 {
3 DataSet ds = new DataSet();
4 ds = chk.QueryChecksCommand(drpOperateMode.SelectedValue, key.Text.Trim(), gm1.Date.ToString(), gm2.Date.ToString(), 2);
5 gvChecks.DataSource=ds;
6 gvChecks.DataBind();
7 OnlyShowGridViewHeader(gvChecks, ds);
8 }