15.GridView合并表头多重表头无错完美版(以合并3列3行举例)
效果图:
 
 
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Drawing;
public partial class _Default : System.Web.UI.Page 
{
 SqlConnection sqlcon;
 SqlCommand sqlcom;
 string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 bind();
 
 }
 }
 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
 GridView1.EditIndex = e.NewEditIndex;
 bind();
 }
 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
 sqlcon = new SqlConnection(strCon);
 string sqlstr = "update 飞狐工作室 set 姓名='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='" 
 + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
 sqlcom=new SqlCommand(sqlstr,sqlcon);
 sqlcon.Open();
 sqlcom.ExecuteNonQuery();
 sqlcon.Close();
 GridView1.EditIndex = -1;
 bind();
 }
 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
 {
 GridView1.EditIndex = -1;
 bind();
 }
 public void bind()
 {
 string sqlstr = "select top 10 * from 飞狐工作室";
 sqlcon = new SqlConnection(strCon);
 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
 DataSet myds = new DataSet();
 sqlcon.Open();
 myda.Fill(myds, "飞狐工作室");
 GridView1.DataSource = myds;
 GridView1.DataKeyNames = new string[] { "身份证号码" };
 GridView1.DataBind();
 sqlcon.Close();
 } 
//这里就是解决方案
 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
 {
 switch (e.Row.RowType)
 {
 case DataControlRowType.Header:
 //第一行表头
 TableCellCollection tcHeader = e.Row.Cells;
 tcHeader.Clear();
 tcHeader.Add(new TableHeaderCell());
 tcHeader[0].Attributes.Add("rowspan", "3"); //跨Row
 tcHeader[0].Attributes.Add("bgcolor", "white");
 tcHeader[0].Text = "";
 tcHeader.Add(new TableHeaderCell());
 //tcHeader[1].Attributes.Add("bgcolor", "Red");
 tcHeader[1].Attributes.Add("colspan", "6"); //跨Column
 tcHeader[1].Text = "全部信息"; 
 //第二行表头
 tcHeader.Add(new TableHeaderCell());
 tcHeader[2].Attributes.Add("bgcolor", "DarkSeaGreen");
 tcHeader[2].Text = "身份证号码";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[3].Attributes.Add("bgcolor", "LightSteelBlue");
 tcHeader[3].Attributes.Add("colspan", "2");
 tcHeader[3].Text = "基本信息";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[4].Attributes.Add("bgcolor", "DarkSeaGreen");
 tcHeader[4].Text = "福利";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[5].Attributes.Add("bgcolor", "LightSteelBlue");
 tcHeader[5].Attributes.Add("colspan", "2");
 tcHeader[5].Text = "联系方式"; 
 //第三行表头
 tcHeader.Add(new TableHeaderCell());
 tcHeader[6].Attributes.Add("bgcolor", "Khaki");
 tcHeader[6].Text = "身份证号码";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[7].Attributes.Add("bgcolor", "Khaki");
 tcHeader[7].Text = "姓名";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[8].Attributes.Add("bgcolor", "Khaki");
 tcHeader[8].Text = "出生日期";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[9].Attributes.Add("bgcolor", "Khaki");
 tcHeader[9].Text = "薪水";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[10].Attributes.Add("bgcolor", "Khaki");
 tcHeader[10].Text = "家庭住址";
 tcHeader.Add(new TableHeaderCell());
 tcHeader[11].Attributes.Add("bgcolor", "Khaki");
 tcHeader[11].Text = "邮政编码";
 break;
 }
 }
}
前台:
 
 GridView合并多重表头表头 清清月儿http://blog.csdn.net/21aspnet  16.GridView突出显示某一单元格(例如金额低于多少,分数不及格等) 
效果图:

解决方案:主要是绑定后过滤
 GridView1.DataBind();
  for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
 {
 DataRowView mydrv = myds.Tables["飞狐工作室"].DefaultView[i];
 string score = Convert.ToString(mydrv["起薪"]);
 if (Convert.ToDouble(score) < 34297.00)//大家这里根据具体情况设置可能ToInt32等等
 {
 GridView1.Rows[i].Cells[4].BackColor = System.Drawing.Color.Red;
 }
 }
 sqlcon.Close(); 
全部后台代码: 
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Drawing; 
public partial class Default7 : System.Web.UI.Page
{
 SqlConnection sqlcon;
 SqlCommand sqlcom;
 string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 bind(); 
 }
 }
 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
 GridView1.EditIndex = e.NewEditIndex;
 bind();
 }
 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
 sqlcon = new SqlConnection(strCon);
 string sqlstr = "update 飞狐工作室 set 姓名='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='"
 + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
 sqlcom = new SqlCommand(sqlstr, sqlcon);
 sqlcon.Open();
 sqlcom.ExecuteNonQuery();
 sqlcon.Close();
 GridView1.EditIndex = -1;
 bind();
 }
 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
 {
 GridView1.EditIndex = -1;
 bind();
 }
 public void bind()
 {
 string sqlstr = "select top 10 * from 飞狐工作室";
 sqlcon = new SqlConnection(strCon);
 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
 DataSet myds = new DataSet();
 sqlcon.Open();
 myda.Fill(myds, "飞狐工作室");
 GridView1.DataSource = myds;
 GridView1.DataKeyNames = new string[] { "身份证号码" };
 GridView1.DataBind();
  for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
 {
 DataRowView mydrv = myds.Tables["飞狐工作室"].DefaultView[i];
 string score = Convert.ToString(mydrv["起薪"]);
 if (Convert.ToDouble(score) < 34297.00)//大家这里根据具体情况设置可能ToInt32等等
 {
 GridView1.Rows[i].Cells[4].BackColor = System.Drawing.Color.Red;
 }
 }
 sqlcon.Close();
 }
} 
前台代码: 
 
 GridView突出显示某一单元格 清清月儿http://blog.csdn.net/21aspnet    17.GridView加入自动求和求平均值小计
效果图:
解决方案: 
private double sum = 0;//取指定列的数据和,你要根据具体情况对待可能你要处理的是int
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {
 
 if (e.Row.RowIndex >= 0)
 {
 sum += Convert.ToDouble(e.Row.Cells[6].Text);
 }
 else if (e.Row.RowType == DataControlRowType.Footer)
 {
 e.Row.Cells[5].Text = "总薪水为:";
 e.Row.Cells[6].Text = sum.ToString();
 e.Row.Cells[3].Text = "平均薪水为:";
 e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();
 
 }
 } 
后台全部代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Drawing; 
public partial class Default7 : System.Web.UI.Page
{
 SqlConnection sqlcon;
 SqlCommand sqlcom;
 string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 bind(); 
 }
 }
 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
 GridView1.EditIndex = e.NewEditIndex;
 bind();
 }
 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
 sqlcon = new SqlConnection(strCon);
 string sqlstr = "update 飞狐工作室 set 姓名='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"
 + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='"
 + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
 sqlcom = new SqlCommand(sqlstr, sqlcon);
 sqlcon.Open();
 sqlcom.ExecuteNonQuery();
 sqlcon.Close();
 GridView1.EditIndex = -1;
 bind();
 }
 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
 {
 GridView1.EditIndex = -1;
 bind();
 }
 public void bind()
 {
 string sqlstr = "select top 5 * from 飞狐工作室";
 sqlcon = new SqlConnection(strCon);
 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
 DataSet myds = new DataSet();
 sqlcon.Open();
 myda.Fill(myds, "飞狐工作室");
 GridView1.DataSource = myds;
 GridView1.DataKeyNames = new string[] { "身份证号码" };
 GridView1.DataBind();
 sqlcon.Close();
 }
 private double sum = 0;//取指定列的数据和
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {
 
 if (e.Row.RowIndex >= 0)
 {
 sum += Convert.ToDouble(e.Row.Cells[6].Text);
 }
 else if (e.Row.RowType == DataControlRowType.Footer)
 {
 e.Row.Cells[5].Text = "总薪水为:";
 e.Row.Cells[6].Text = sum.ToString();
 e.Row.Cells[3].Text = "平均薪水为:";
 e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();
 
 }
 }
}
前台:唯一的花头就是设置ShowFooter="True" ,否则默认表头为隐藏的!
 OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 18.GridView数据导入Excel/Excel数据读入GridView 
效果图:
 
 
解决方案:
页面增加一个按钮,单击事件添加如下方法:
protected void Button1_Click(object sender, EventArgs e)
 {
 Export("application/ms-excel", "学生成绩报表.xls");
 } 
 private void Export(string FileType, string FileName)
 {
 Response.Charset = "GB2312";
 Response.ContentEncoding = System.Text.Encoding.UTF7;
 Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
 Response.ContentType = FileType;
 this.EnableViewState = false;
 StringWriter tw = new StringWriter();
 HtmlTextWriter hw = new HtmlTextWriter(tw);
 GridView1.RenderControl(hw);
 Response.Write(tw.ToString());
 Response.End();
 }
//如果没有下面方法会报错类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
 public override void VerifyRenderingInServerForm(Control control)
 {
 }
还有由于是文件操作所以要引入名称空间IO和Text 
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Text;
public partial class Default7 : System.Web.UI.Page
{
 SqlConnection sqlcon;
 SqlCommand sqlcom;
 string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 bind(); 
 }
 }
 
 public void bind()
 {
 string sqlstr = "select top 5 * from 飞狐工作室";
 sqlcon = new SqlConnection(strCon);
 SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
 DataSet myds = new DataSet();
 sqlcon.Open();
 myda.Fill(myds, "飞狐工作室");
 GridView1.DataSource = myds;
 GridView1.DataKeyNames = new string[] { "身份证号码" };
 GridView1.DataBind();
 sqlcon.Close();
 } 
 protected void Button1_Click(object sender, EventArgs e)
 {
 Export("application/ms-excel", "学生成绩报表.xls");
 } 
 private void Export(string FileType, string FileName)
 {
 Response.Charset = "GB2312";
 Response.ContentEncoding = System.Text.Encoding.UTF7;
 Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
 Response.ContentType = FileType;
 this.EnableViewState = false;
 StringWriter tw = new StringWriter();
 HtmlTextWriter hw = new HtmlTextWriter(tw);
 GridView1.RenderControl(hw);
 Response.Write(tw.ToString());
 Response.End();
 }
 public override void VerifyRenderingInServerForm(Control control)
 {
 }
 
} 
前台:
 BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 onClick="Button1_Click" Text="导出" /> 
读取Excel数据的代码:这个很简单的
private DataSet CreateDataSource()
 {
 string strCon;
 strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel.xls") + "; Extended Properties=Excel 8.0;";
 OleDbConnection olecon = new OleDbConnection(strCon);
 OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1]", strCon);
 DataSet myds = new DataSet();
 myda.Fill(myds);
 return myds;
 }
 protected void Button1_Click(object sender, EventArgs e)
 {
 GridView1.DataSource = CreateDataSource();
 GridView1.DataBind();
 }