原文件作者是:csdn.net的清清月儿 她的主页 http://blog.csdn.net/21aspnet/
后台代码
代码
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 = " 全部信息</th></tr><tr> " ; // 第二行表头 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 = " 联系方式</th></tr><tr> " ; // 第三行表头 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 ; } }}前台代码
代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server" > < title > GridView合并多重表头表头 清清月儿http://blog.csdn.net/21aspnet </ title > </ head > < body > < form id ="form1" runat ="server" > < div > < asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" CellPadding ="3" OnRowEditing ="GridView1_RowEditing" OnRowUpdating ="GridView1_RowUpdating" OnRowCancelingEdit ="GridView1_RowCancelingEdit" BackColor ="White" BorderColor ="#CCCCCC" BorderStyle ="None" BorderWidth ="1px" Font-Size ="12px" OnRowCreated ="GridView1_RowCreated" > < FooterStyle BackColor ="White" ForeColor ="#000066" /> < Columns > < asp:CommandField HeaderText ="编辑" ShowEditButton ="True" /> < asp:BoundField DataField ="身份证号码" HeaderText ="编号" ReadOnly ="True" /> < asp:BoundField DataField ="姓名" HeaderText ="姓名" /> < asp:BoundField DataField ="出生日期" HeaderText ="邮政编码" /> < asp:BoundField DataField ="起薪" HeaderText ="起薪" /> < asp:BoundField DataField ="家庭住址" HeaderText ="家庭住址" /> < asp:BoundField DataField ="邮政编码" HeaderText ="邮政编码" /> </ Columns > < RowStyle ForeColor ="#000066" /> < SelectedRowStyle BackColor ="#669999" Font-Bold ="True" ForeColor ="White" /> < PagerStyle BackColor ="White" ForeColor ="#000066" HorizontalAlign ="Left" CssClass ="ms-formlabel DataGridFixedHeader" /> < HeaderStyle BackColor ="#006699" Font-Bold ="True" ForeColor ="White" /> </ asp:GridView > </ div > </ form > </ body > </ html >
解决方案:主要是绑定后过滤
代码
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(); }}
前台代码:
代码
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns ="http://www.w3.org/1999/xhtml" > < head id ="Head1" runat ="server" > < title > GridView突出显示某一单元格 清清月儿http://blog.csdn.net/21aspnet </ title > </ head > < body > < form id ="form1" runat ="server" > < div > < asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" CellPadding ="3" OnRowEditing ="GridView1_RowEditing" OnRowUpdating ="GridView1_RowUpdating" OnRowCancelingEdit ="GridView1_RowCancelingEdit" BackColor ="White" BorderColor ="#CCCCCC" BorderStyle ="None" BorderWidth ="1px" Font-Size ="12px" > < FooterStyle BackColor ="White" ForeColor ="#000066" /> < Columns > < asp:CommandField HeaderText ="编辑" ShowEditButton ="True" /> < asp:BoundField DataField ="身份证号码" HeaderText ="编号" ReadOnly ="True" /> < asp:BoundField DataField ="姓名" HeaderText ="姓名" /> < asp:BoundField DataField ="出生日期" HeaderText ="邮政编码" /> < asp:BoundField DataField ="起薪" HeaderText ="起薪" DataFormatString ="{0:C}" HtmlEncode ="false" /> < asp:BoundField DataField ="家庭住址" HeaderText ="家庭住址" /> < asp:BoundField DataField ="邮政编码" HeaderText ="邮政编码" /> </ Columns > < RowStyle ForeColor ="#000066" /> < SelectedRowStyle BackColor ="#669999" Font-Bold ="True" ForeColor ="White" /> < PagerStyle BackColor ="White" ForeColor ="#000066" HorizontalAlign ="Left" CssClass ="ms-formlabel DataGridFixedHeader" /> < HeaderStyle BackColor ="#006699" Font-Bold ="True" ForeColor ="White" /> </ asp:GridView > </ div > </ form > </ body > </ html >
代码 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" ,否则默认表头为隐藏的!
代码 < asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" CellPadding ="3" OnRowEditing ="GridView1_RowEditing" OnRowUpdating ="GridView1_RowUpdating" OnRowCancelingEdit ="GridView1_RowCancelingEdit" BackColor ="White" BorderColor ="#CCCCCC" BorderStyle ="None" BorderWidth ="1px" Font-Size ="12px" OnRowDataBound ="GridView1_RowDataBound" ShowFooter ="True" > < FooterStyle BackColor ="White" ForeColor ="#000066" /> < Columns > < asp:CommandField HeaderText ="编辑" ShowEditButton ="True" /> < asp:BoundField DataField ="身份证号码" HeaderText ="编号" ReadOnly ="True" /> < asp:BoundField DataField ="姓名" HeaderText ="姓名" /> < asp:BoundField DataField ="出生日期" HeaderText ="邮政编码" /> < asp:BoundField DataField ="家庭住址" HeaderText ="家庭住址" /> < asp:BoundField DataField ="邮政编码" HeaderText ="邮政编码" /> < asp:BoundField DataField ="起薪" HeaderText ="起薪" /> </ Columns > < RowStyle ForeColor ="#000066" /> < SelectedRowStyle BackColor ="#669999" Font-Bold ="True" ForeColor ="White" /> < PagerStyle BackColor ="White" ForeColor ="#000066" HorizontalAlign ="Left" CssClass ="ms-formlabel DataGridFixedHeader" /> < HeaderStyle BackColor ="#006699" Font-Bold ="True" ForeColor ="White" /> </ asp: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) { } }
前台
代码
< asp:GridView ID ="GridView1" runat ="server" AutoGenerateColumns ="False" CellPadding ="3" BackColor ="White" BorderColor ="#CCCCCC" BorderStyle ="None" BorderWidth ="1px" Font-Size ="12px" > < FooterStyle BackColor ="White" ForeColor ="#000066" /> < Columns > < asp:BoundField DataField ="身份证号码" HeaderText ="编号" ReadOnly ="True" /> < asp:BoundField DataField ="姓名" HeaderText ="姓名" /> < asp:BoundField DataField ="出生日期" HeaderText ="邮政编码" /> < asp:BoundField DataField ="家庭住址" HeaderText ="家庭住址" /> < asp:BoundField DataField ="邮政编码" HeaderText ="邮政编码" /> < asp:BoundField DataField ="起薪" HeaderText ="起薪" /> </ Columns > < RowStyle ForeColor ="#000066" /> < SelectedRowStyle BackColor ="#669999" Font-Bold ="True" ForeColor ="White" /> < PagerStyle BackColor ="White" ForeColor ="#000066" HorizontalAlign ="Left" CssClass ="ms-formlabel DataGridFixedHeader" /> < HeaderStyle BackColor ="#006699" Font-Bold ="True" ForeColor ="White" /> </ asp:GridView > < asp:Button ID ="Button1" runat ="server" 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(); }