GridView詳解

快速預覽:
GridView無代碼分頁排序
GridView選中,編輯,取消,刪除
GridView正反雙向排序
GridView和下拉菜單DropDownList結合
GridView和CheckBox結合
鼠標移到GridView某一行時改變該行的背景色方法一
鼠標移到GridView某一行時改變該行的背景色方法二
GridView實現刪除時彈出確認對話框
GridView實現自動編號
GridView實現自定義時間貨幣等字符串格式
GridView實現用“...”代替超長字符串
GridView一般換行與強制換行
GridView顯示隱藏某一列
GridView彈出新頁面/彈出新窗口
GridView固定表頭(不用javascript只用CSS,2行代碼,很好用)
GridView合并表頭多重表頭無錯完美版(以合并3列3行舉例)
GridView突出顯示某一單元格(例如金額低于多少,分數不及格等)
GridView加入自動求和求平均值小計
GridView數據導入Excel/Excel數據讀入GridView

1.GridView無代碼分頁排序

效果圖:

1.AllowSorting設為True,aspx代碼中是AllowSorting="True";
2.默認1頁10條,如果要修改每頁條數,修改PageSize即可,在aspx代碼中是PageSize="12"。
3.默認的是單向排序的,右擊GridView彈出“屬性”,選擇AllowSorting為True即可。


2.GridView選中,編輯,取消,刪除:

效果圖:

后臺代碼:
你可以使用sqlhelper,本文沒用。代碼如下:
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;

public partial class _Default : System.Web.UI.Page
{

//清清月兒http://blog.csdn.net/21aspnet?
??? SqlConnection sqlcon;
??? SqlCommand sqlcom;
??? string strCon = "Data Source=(local);Database=數據庫名;Uid=帳號;Pwd=密碼";
??? 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_RowDeleting(object sender, GridViewDeleteEventArgs e)
??? {
??????? string sqlstr = "delete from?表 where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
??????? sqlcon = new SqlConnection(strCon);
??????? sqlcom = new SqlCommand(sqlstr,sqlcon);
??????? sqlcon.Open();
??????? sqlcom.ExecuteNonQuery();
??????? sqlcon.Close();
??????? bind();
??? }

//更新
??? protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
??? {
??????? sqlcon = new SqlConnection(strCon);
??????? string sqlstr = "update 表 set 字段1='"
??????????? + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',字段2='"
??????????? + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',字段3='"
??????????? + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where id='"
??????????? + 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 * 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[] { "id" };//主鍵
??????? GridView1.DataBind();
??????? sqlcon.Close();
??? }
}

前臺主要代碼:
??????????????????????????? ... ...
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
??????????????????????? ForeColor="#333333" GridLines="None" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
??????????????????????? OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit">
??????????????????????? <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
??????????????????????? <Columns>
??????????????????????????? <asp:BoundField DataField="身份證號碼" HeaderText="用戶ID" ReadOnly="True" />
??????????????????????????? <asp:BoundField DataField="姓名" HeaderText="用戶姓名" />
??????????????????????????? <asp:BoundField DataField="員工性別" HeaderText="性別" />
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
??????????????????????????? <asp:CommandField HeaderText="選擇" ShowSelectButton="True" />
??????????????????????????? <asp:CommandField HeaderText="編輯" ShowEditButton="True" />
??????????????????????????? <asp:CommandField HeaderText="刪除" ShowDeleteButton="True" />
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>


3.GridView正反雙向排序:
效果圖:點姓名各2次的排序,點其他也一樣可以。

后臺代碼:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
public partial class Default3 : System.Web.UI.Page
{

//清清月兒的博客http://blog.csdn.net/21aspnet?
??? SqlConnection sqlcon;
??? string strCon = "Data Source=(local);Database=北風貿易;Uid=sa;Pwd=";
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? if (!IsPostBack)
??????? {
??????????? ViewState["SortOrder"] = "身份證號碼";
??????????? ViewState["OrderDire"] = "ASC";
??????????? bind();
??????? }
??? }
??? protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
??? {
??????? string sPage = e.SortExpression;
??????? if (ViewState["SortOrder"].ToString() == sPage)
??????? {
??????????? if (ViewState["OrderDire"].ToString() == "Desc")
??????????????? ViewState["OrderDire"] = "ASC";
??????????? else
??????????????? ViewState["OrderDire"] = "Desc";
??????? }
??????? else
??????? {
??????????? ViewState["SortOrder"] = e.SortExpression;
??????? }
??????? 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, "飛狐工作室");
??????? DataView view = myds.Tables["飛狐工作室"].DefaultView;
??????? string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
??????? view.Sort = sort;
??????? GridView1.DataSource = view;
??????? GridView1.DataBind();
??????? sqlcon.Close();
??? }
}

前臺主要代碼:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
??????????????????????? CellPadding="3" Font-Size="9pt" OnSorting="GridView1_Sorting" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
??????????????????????? <FooterStyle BackColor="White" ForeColor="#000066" />
??????????????????????? <Columns>
???????????????????????????? <asp:BoundField DataField="身份證號碼" HeaderText="用戶ID" SortExpression="身份證號碼" />
??????????????????????????? <asp:BoundField DataField="姓名" HeaderText="用戶姓名" SortExpression="姓名"/>
??????????????????????????? <asp:BoundField DataField="員工性別" HeaderText="性別" SortExpression="員工性別"/>
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/>
???????????????????????????????
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>

?

4.GridView和下拉菜單DropDownList結合:

效果圖:

后臺代碼:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
public partial class Default4 : System.Web.UI.Page
{
??? SqlConnection sqlcon;
??? string strCon = "Data Source=(local);Database=北風貿易;Uid=sa;Pwd=sa";
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? DropDownList ddl;
??????? if (!IsPostBack)
??????? {
??????????? 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.DataBind();
??????????? for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????????? {
??????????????? DataRowView mydrv = myds.Tables["飛狐工作室"].DefaultView[i];
??????????????? if (Convert.ToString(mydrv["員工性別"]).Trim() == "True")
??????????????? {
??????????????????? ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
??????????????????? ddl.SelectedIndex = 0;
??????????????? }
??????????????? if (Convert.ToString(mydrv["員工性別"]).Trim() == "False")
??????????????? {
??????????????????? ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
??????????????????? ddl.SelectedIndex = 1;
??????????????? }
??????????? }
??????????? sqlcon.Close();
??????? }
??? }
??? public SqlDataReader ddlbind()
??? {
??????? string sqlstr = "select distinct 員工性別 from 飛狐工作室";
??????? sqlcon = new SqlConnection(strCon);
??????? SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);
??????? sqlcon.Open();
??????? return sqlcom.ExecuteReader();
??? }

前臺主要代碼:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
??????????????????????? CellPadding="3" Font-Size="9pt"? BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
??????????????????????? <FooterStyle BackColor="White" ForeColor="#000066" />
??????????????????????? <Columns>
???????????????????????????? <asp:BoundField DataField="身份證號碼" HeaderText="用戶ID" SortExpression="身份證號碼" />
??????????????????????????? <asp:BoundField DataField="姓名" HeaderText="用戶姓名" SortExpression="姓名"/>
??????????????????????????? <asp:TemplateField HeaderText="員工性別">
??????????????????????????????? <ItemTemplate>
??????????????????????????????????? <asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' DataValueField="員工性別" DataTextField="員工性別">
??????????????????????????????????? </asp:DropDownList>
??????????????????????????????? </ItemTemplate>
??????????????????????????? </asp:TemplateField>
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/>
???????????????????????????????
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>

5.GridView和CheckBox結合:

效果圖:

后臺代碼:

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;

public partial class Default5 : System.Web.UI.Page
{
//清清月兒http://blog.csdn.net/21aspnet
??? SqlConnection sqlcon;
??? string strCon = "Data Source=(local);Database=北風貿易;Uid=sa;Pwd=sa";
??? protected void Page_Load(object sender, EventArgs e)
??? {
??????? if (!IsPostBack)
??????? {
??????????? bind();
??????? }
??? }
??? protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
??? {
??????? for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????? {
??????????? CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
??????????? if (CheckBox2.Checked == true)
??????????? {
??????????????? cbox.Checked = true;
??????????? }
??????????? else
??????????? {
??????????????? cbox.Checked = false;
??????????? }
??????? }
??? }
??? protected void Button2_Click(object sender, EventArgs e)
??? {
??????? sqlcon = new SqlConnection(strCon);
??????? SqlCommand sqlcom;
??????? for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????? {
??????????? CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
??????????? if (cbox.Checked == true)
??????????? {

??????????????? string sqlstr = "delete from 飛狐工作室 where 身份證號碼='" + GridView1.DataKeys[i].Value + "'";
??????????????? sqlcom = new SqlCommand(sqlstr, sqlcon);
??????????????? sqlcon.Open();
??????????????? sqlcom.ExecuteNonQuery();
??????????????? sqlcon.Close();
??????????? }
??????? }
??????? bind();
??? }
??? protected void Button1_Click(object sender, EventArgs e)
??? {
??????? CheckBox2.Checked = false;
??????? for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????? {
??????????? CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
??????????? cbox.Checked = false;
??????? }
??? }
??? 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, "tb_Member");
??????? GridView1.DataSource = myds;
??????? GridView1.DataKeyNames = new string[] { "身份證號碼" };
??????? GridView1.DataBind();
??????? sqlcon.Close();
??? }
}

前臺主要代碼:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
??????????????????????? CellPadding="3" Font-Size="9pt"? BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
??????????????????????? <FooterStyle BackColor="White" ForeColor="#000066" />
??????????????????????? <Columns>
???????????????????????????? <asp:TemplateField>
??????????????????????????????? <ItemTemplate>
??????????????????????????????????? <asp:CheckBox ID="CheckBox1" runat="server" />
??????????????????????????????? </ItemTemplate>
??????????????????????????? </asp:TemplateField>
???????????????????????????? <asp:BoundField DataField="身份證號碼" HeaderText="用戶ID" SortExpression="身份證號碼" />
??????????????????????????? <asp:BoundField DataField="姓名" HeaderText="用戶姓名" SortExpression="姓名"/>
???????????????????????????
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址"/>
???????????????????????????????
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>
???????????????????? <asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" Font-Size="9pt" OnCheckedChanged="CheckBox2_CheckedChanged"
??????????????????????? Text="全選" />
??????????????????? <asp:Button ID="Button1" runat="server" Font-Size="9pt" Text="取消" OnClick="Button1_Click" />
??????????????????? <asp:Button ID="Button2" runat="server" Font-Size="9pt" Text="刪除" OnClick="Button2_Click" />

6.鼠標移到GridView某一行時改變該行的背景色方法一:

效果圖:

做法:
雙擊GridView的OnRowDataBound事件;
在后臺的GridView1_RowDataBound()方法添加代碼,最后代碼如下所示:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? int i;
??????? //執行循環,保證每條數據都可以更新
??????? for (i = 0; i < GridView1.Rows.Count; i++)
??????? {
??????????? //首先判斷是否是數據行
??????????? if (e.Row.RowType == DataControlRowType.DataRow)
??????????? {
??????????????? //當鼠標停留時更改背景色
??????????????? e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
??????????????? //當鼠標移開時還原背景色
??????????????? e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
??????????? }
??????? }

??? }

前臺代碼:
<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" DataKeyNames="身份證號碼"
??????????? DataSourceID="SqlDataSource1" AllowSorting="True" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
??????????? <Columns>
??????????????? <asp:BoundField DataField="身份證號碼" HeaderText="身份證號碼" ReadOnly="True" SortExpression="身份證號碼" />
??????????????? <asp:BoundField DataField="姓名" HeaderText="姓名" SortExpression="姓名" />
??????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址" SortExpression="家庭住址" />
??????????????? <asp:BoundField DataField="郵政編碼" HeaderText="郵政編碼" SortExpression="郵政編碼" />
??????????? </Columns>
??????????? <FooterStyle BackColor="White" ForeColor="#000066" />
??????????? <RowStyle ForeColor="#000066" />
??????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????? </asp:GridView>
??????? <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:北風貿易ConnectionString1 %>"
??????????? SelectCommand="SELECT top 5 [身份證號碼], [姓名], [員工性別], [家庭住址], [郵政編碼] FROM [飛狐工作室]" DataSourceMode="DataReader"></asp:SqlDataSource>
???
??? </div>
??? </form>
</body>
</html>

7.鼠標移到GridView某一行時改變該行的背景色方法二:

效果圖:

做法:和上面的一樣就是代碼不同
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? //int i;
??????? 執行循環,保證每條數據都可以更新
??????? //for (i = 0; i < GridView1.Rows.Count; i++)
??????? //{
??????? //??? //首先判斷是否是數據行
??????? //??? if (e.Row.RowType == DataControlRowType.DataRow)
??????? //??? {
??????? //??????? //當鼠標停留時更改背景色
??????? //??????? e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");
??????? //??????? //當鼠標移開時還原背景色
??????? //??????? e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
??????? //??? }
??????? //}
??????? //如果是綁定數據行
??????? if (e.Row.RowType == DataControlRowType.DataRow)
??????? {
??????????? //鼠標經過時,行背景色變
??????????? e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
??????????? //鼠標移出時,行背景色變
??????????? e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");
??????? }

??? }

8.GridView實現刪除時彈出確認對話框:

效果圖:

實現方法:
雙擊GridView的OnRowDataBound事件;
在后臺的GridView1_RowDataBound()方法添加代碼,最后代碼如下所示:

??? protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? //如果是綁定數據行
??????? if (e.Row.RowType == DataControlRowType.DataRow)
??????? {
?????????????if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
??????????? {
??????????????? ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除:/"" + e.Row.Cells[1].Text + "/"嗎?')");
??????????? }
??????? }

??? }

9.GridView實現自動編號:

效果圖:

實現方法:
雙擊GridView的OnRowDataBound事件;
在后臺的GridView1_RowDataBound()方法添加代碼,最后代碼如下所示:
??? protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? //如果是綁定數據行 //清清月兒http://blog.csdn.net/21aspnet?
??????? if (e.Row.RowType == DataControlRowType.DataRow)
??????? {
??????????? 鼠標經過時,行背景色變
??????????? //e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
??????????? 鼠標移出時,行背景色變
??????????? //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");

??????????? 當有編輯列時,避免出錯,要加的RowState判斷
??????????? //if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
??????????? //{
??????????? //??? ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除:/"" + e.Row.Cells[1].Text + "/"嗎?')");
??????????? //}

??????? }
??????? if (e.Row.RowIndex != -1)
??????? {
??????????? int id = e.Row.RowIndex + 1;
??????????? e.Row.Cells[0].Text = id.ToString();
??????? }

??? }

?

注意這時最好把前臺的第一列的表頭該為“編號”,因為以前的第一列被“吃掉”了。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
??????????????????????? OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
??????????????????????? <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:CommandField HeaderText="選擇" ShowSelectButton="True" />
??????????????????????????? <asp:CommandField HeaderText="編輯" ShowEditButton="True" />
??????????????????????????? <asp:CommandField HeaderText="刪除" ShowDeleteButton="True" />
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>

10.GridView實現自定義時間貨幣等字符串格式:

效果圖:
圖1-未格式化前

圖2-格式化后

解決方法:

在asp.net 2.0中,如果要在綁定列中顯示比如日期格式等,如果用下面的方法是顯示不了的

<asp :BoundField DataField="CreationDate"
DataFormatString="{0:M-dd-yyyy}"
HeaderText="CreationDate" />

主要是由于htmlencode屬性默認設置為true,已防止XSS攻擊,安全起見而用的,所以,可以有以下兩種方法解決

1、

<asp :GridView ID="GridView1" runat="server">
<columns>
<asp :BoundField DataField="CreationDate"
DataFormatString="{0:M-dd-yyyy}"
HtmlEncode="false"
HeaderText="CreationDate" />
</columns>
</asp>

將htmlencode設置為false即可

另外的解決方法為,使用模版列

<asp :GridView ID="GridView3" runat="server" >
<columns>
<asp :TemplateField HeaderText="CreationDate" >
<edititemtemplate>
<asp :Label ID="Label1" runat="server"
Text='<%# Eval("CreationDate", "{0:M-dd-yyyy}") %>'>
</asp>
</edititemtemplate>
<itemtemplate>
<asp :Label ID="Label1" runat="server"
Text=’<%# Bind("CreationDate", "{0:M-dd-yyyy}") %>'>
</asp>
</itemtemplate>
</asp>
</columns>
</asp>

前臺代碼:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="身份證號碼"
??????????? DataSourceID="SqlDataSource1" AllowSorting="True" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
??????????? <Columns>
??????????????? <asp:BoundField DataField="身份證號碼" HeaderText="身份證號碼" ReadOnly="True" SortExpression="身份證號碼" />
??????????????? <asp:BoundField DataField="姓名" HeaderText="姓名" SortExpression="姓名" />
??????????????? <asp:BoundField DataField="郵政編碼" HeaderText="郵政編碼" SortExpression="郵政編碼" />
??????????????? <asp:BoundField DataField="出生日期" HeaderText="出生日期" SortExpression="出生日期" />
??????????????? <asp:BoundField DataField="起薪" HeaderText="起薪" SortExpression="起薪" />
??????????? </Columns>
??????????? <FooterStyle BackColor="White" ForeColor="#000066" />
??????????? <RowStyle ForeColor="#000066" />
??????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????? </asp:GridView>
??????? <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:北風貿易ConnectionString1 %>"
??????????? SelectCommand="SELECT top 5 [出生日期], [起薪], [身份證號碼], [姓名], [家庭住址], [郵政編碼] FROM [飛狐工作室]" DataSourceMode="DataReader"></asp:SqlDataSource>

附錄-常用格式化公式:
{0:C}? 貨幣;
{0:D4}由0填充的4個字符寬的字段中顯示整數;
{0:000.0}四舍五入小數點保留第幾位有效數字;
{0:N2}小數點保留2位有效數字;{0:N2}%?? 小數點保留2位有效數字加百分號;
{0:D}長日期;{0:d}短日期;{0:yy-MM-dd}?? 例如07-3-25;;{0:yyyy-MM-dd}? 例如2007-3-25

?11.GridView實現用“...”代替超長字符串:

效果圖:

解決方法:數據綁定后過濾每一行即可
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????? {
??????????? DataRowView mydrv;
??????????? string gIntro;
??????????? if (GridView1.PageIndex == 0)
??????????? {
??????????????? mydrv = myds.Tables["飛狐工作室"].DefaultView[i];//表名
??????????????? gIntro = Convert.ToString(mydrv["家庭住址"]);//所要處理的字段
??????????????? GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
??????????? }
??????????? else
??????????? {
??????????????? mydrv = myds.Tables["飛狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
??????????????? gIntro = Convert.ToString(mydrv["家庭住址"]);
??????????????? GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
??????????? }
??????? }?

調用的方法:

??? public string SubStr(string sString, int nLeng)
??? {
??????? if (sString.Length <= nLeng)
??????? {
??????????? return sString;
??????? }
??????? string sNewStr = sString.Substring(0, nLeng);
??????? sNewStr = sNewStr + "...";
??????? return sNewStr;
??? }

后臺全部代碼:
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;

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)
??????? {
??????????? ViewState["SortOrder"] = "身份證號碼";
??????????? ViewState["OrderDire"] = "ASC";
??????????? bind();
??????? }
??? }
??? protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
??? {
??????? GridView1.EditIndex = e.NewEditIndex;
??????? bind();
??? }
??? protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
??? {
??????? string sqlstr = "delete from 飛狐工作室 where 身份證號碼='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
??????? sqlcon = new SqlConnection(strCon);
??????? sqlcom = new SqlCommand(sqlstr,sqlcon);
??????? sqlcon.Open();
??????? sqlcom.ExecuteNonQuery();
??????? sqlcon.Close();
??????? 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();
??????? for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
??????? {
??????????? DataRowView mydrv;
??????????? string gIntro;
??????????? if (GridView1.PageIndex == 0)
??????????? {
??????????????? mydrv = myds.Tables["飛狐工作室"].DefaultView[i];
??????????????? gIntro = Convert.ToString(mydrv["家庭住址"]);
??????????????? GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
??????????? }
??????????? else
??????????? {
??????????????? mydrv = myds.Tables["飛狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
??????????????? gIntro = Convert.ToString(mydrv["家庭住址"]);
??????????????? GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
??????????? }
??????? }
???????
??????? sqlcon.Close();
??? }
??? public string SubStr(string sString, int nLeng)
??? {
??????? if (sString.Length <= nLeng)
??????? {
??????????? return sString;
??????? }
??????? string sNewStr = sString.Substring(0, nLeng);
??????? sNewStr = sNewStr + "...";
??????? return sNewStr;
??? }
??? protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? //如果是綁定數據行?
??????? if (e.Row.RowType == DataControlRowType.DataRow)
??????? {
??????????? 鼠標經過時,行背景色變
??????????? //e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
??????????? 鼠標移出時,行背景色變
??????????? //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");

??????????? 當有編輯列時,避免出錯,要加的RowState判斷
??????????? //if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
??????????? //{
??????????? //??? ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你確認要刪除:/"" + e.Row.Cells[1].Text + "/"嗎?')");
??????????? //}

??????? }
??????? if (e.Row.RowIndex != -1)
??????? {
??????????? int id = e.Row.RowIndex + 1;
??????????? e.Row.Cells[0].Text = id.ToString();
??????? }

??? }
}

?11.GridView一般換行與強制換行:

效果圖:

首先設置<asp:BoundField DataField="家庭住址" HeaderText="家庭住址"? ItemStyle-Width="100" />
gridview里有一列綁定的數據很長,顯示的時候在一行里面顯示,頁面拉得很寬。
原因是連續英文段為一個整體導致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。

如果要給所有的列增加此屬性:
?protected void Page_Load(object sender, EventArgs e)
??? {
??????? //正常換行
??????? GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
??????? //下面這行是自動換行
??????? GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
??????? if (!IsPostBack)
??????? {
?????????????bind();//調用數據綁定即可
??????? }
??? }
總之:善用CSS的word-break:break-all;word-wrap:break-word屬性即可,這個屬性是通用的對于頑固的南換行問題都可以解決,不局限于GridView。

?12.GridView顯示隱藏某一列:
本方案為月兒獨創,不同于網上其他方式,我覺得用一個CheckBox更人性化,這樣可以隱藏不必要的列,讓用戶自己選擇需要出現的列,在處理多列時這是一個很好的解決方案!

效果圖:
圖1-開始

圖2-點擊顯示的CheckBox后

解決方案:
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();
??????? GridView1.Columns[3].Visible = false;//一開始隱藏
??????? CheckBox1.Checked = false;//如果不這樣后面的代碼會把他True

??? }

雙擊CheckBox1,在CheckedChanged方法里寫上代碼,最后代碼如下:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
??? {
???????? GridView1.Columns[3].Visible=! GridView1.Columns[3].Visible;
???????? Response.Write("GridView1的第4列現在的顯示隱藏狀態是:"+GridView1.Columns[3].Visible.ToString());
??? }

注意:CheckBox1的AutoPostBack要True

后臺全部代碼如下:

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;

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)
??????? {
??????????? ViewState["SortOrder"] = "身份證號碼";
??????????? ViewState["OrderDire"] = "ASC";
??????????? bind();
?????????????????? }
??? }
??? protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
??? {
??????? GridView1.EditIndex = e.NewEditIndex;
??????? bind();
??? }
??? protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
??? {
??????? string sqlstr = "delete from 飛狐工作室 where 身份證號碼='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
??????? sqlcon = new SqlConnection(strCon);
??????? sqlcom = new SqlCommand(sqlstr,sqlcon);
??????? sqlcon.Open();
??????? sqlcom.ExecuteNonQuery();
??????? sqlcon.Close();
??????? 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();
??????? GridView1.Columns[3].Visible = false;
??????? CheckBox1.Checked = false;
??? }
??? protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
??? {
???????? GridView1.Columns[3].Visible=! GridView1.Columns[3].Visible;
???????? Response.Write("GridView1的第4列現在的顯示隱藏狀態是:"+GridView1.Columns[3].Visible.ToString());
??? }
}

前臺代碼:
<!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 style="font-size=12px">
??? <form id="form1" runat="server">
??? <div>
?????????????????? <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" 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:BoundField DataField="身份證號碼" HeaderText="編號" ReadOnly="True" />
??????????????????????????? <asp:BoundField DataField="姓名" HeaderText="用戶姓名" />
??????????????????????????? <asp:BoundField DataField="郵政編碼" HeaderText="郵政編碼" SortExpression="郵政編碼" />
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址"? />
??????????????????????????? <asp:CommandField HeaderText="選擇" ShowSelectButton="True" />
??????????????????????????? <asp:CommandField HeaderText="編輯" ShowEditButton="True" />
??????????????????????????? <asp:CommandField HeaderText="刪除" ShowDeleteButton="True" />
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>
??????? <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" Font-Size="12px"
??????????? OnCheckedChanged="CheckBox1_CheckedChanged" Text="顯示隱藏家庭住址" /></div>
??? </form>
</body>
</html>

?13.GridView彈出新頁面/彈出制定大小位置新窗口:

效果圖:

方案一:簡單的方法,新窗口不固定大小
?<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" 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:BoundField DataField="身份證號碼" HeaderText="編號" ReadOnly="True" />
??????????????????????????? <asp:BoundField DataField="郵政編碼" HeaderText="郵政編碼" SortExpression="郵政編碼" />
??????????????????????????? <asp:BoundField DataField="家庭住址" HeaderText="家庭住址"? />
??????????????????????????? <asp:HyperLinkField HeaderText="姓名" Text="姓名" DataNavigateUrlFields="姓名" DataNavigateUrlFormatString="Default6.aspx?GoodsID={0}" Target="mainframe" NavigateUrl="~/Default6.aspx" DataTextField="姓名" >
??????????????????? </asp:HyperLinkField>
??????????????????????????? <asp:CommandField HeaderText="選擇" ShowSelectButton="True" />
??????????????????????????? <asp:CommandField HeaderText="編輯" ShowEditButton="True" />
??????????????????????????? <asp:CommandField HeaderText="刪除" ShowDeleteButton="True" />
??????????????????????? </Columns>
??????????????????????? <RowStyle ForeColor="#000066" />
??????????????????????? <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
??????????????????????? <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
??????????????????????? <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
??????????????????? </asp:GridView>
DataNavigateUrlFields是鏈接的字段名,DataNavigateUrlFormatString是路徑。

方案二:精確控制彈出窗口大小位置
<asp:HyperLinkColumn DataNavigateUrlField="EmployeeID" DataNavigateUrlFormatString="javascript:varwin=window.open('detail.aspx?ID={0}',null,'width=300,height=200');window.Close();"
???????DataTextField="LastName" HeaderText="LastName"></asp:HyperLinkColumn>

使用的是結合javascript的window.open方法,關于window.open的參數網上有很多帖子,本站也有許多參考
彈出窗口大全 http://blog.csdn.net/21aspnet/archive/2004/10/25/150231.aspx?? 即可!

??14.GridView固定表頭(不用javascript只用CSS!,很好用)

效果圖:

代碼:
<!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>
??????? <style>
.Freezing
?? {
???
?? position:relative ;
?? table-layout:fixed;
?? top:expression(this.offsetParent.scrollTop);??
?? z-index: 10;
?? }

.Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
</style>
</head>
<body style="font-size=12px">
??? <form id="form1" runat="server">
??? <div style="overflow-y: scroll; height: 200px;width:300px" id="dvBody">
?????????????????? <asp:GridView ID="GridView1" runat="server"??? AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" 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:BoundField DataField="身份證號碼" HeaderText="編號" ReadOnly="True" />
??????????????????????????? <asp:BoundField DataField="郵政編碼" HeaderText="郵政編碼" SortExpression="郵政編碼" />
??????????????????????????? <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" CssClass="Freezing"/>
??????????????????? </asp:GridView>
??????? </div>

??? </form>
</body>
</html>

用法:CSS設如上的樣式,HeaderStyle加CssClass="Freezing,套住GridView的Div設置高度寬度 <div style="overflow-y: scroll; height: 200px;width:200px" >

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 = "全部信息</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>

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();
??? }
}

前臺代碼:

<!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>

?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" ,否則默認表頭為隱藏的!
<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>

?

?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)
??? {
??? }
???
}

前臺
<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();
??? }

由于時間關系,這個文章先到此。有時間再寫,其實還有很多技巧,不過我覺得如果能融匯貫通應該可以舉一反三

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389301.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

訪問模型參數,初始化模型參數,共享模型參數方法

一. 訪問模型參數 對于使用Sequential類構造的神經網絡&#xff0c;我們可以通過方括號[]來訪問網絡的任一層。回憶一下上一節中提到的Sequential類與Block類的繼承關系。 對于Sequential實例中含模型參數的層&#xff0c;我們可以通過Block類的params屬性來訪問該層包含的所有…

QZEZ第一屆“飯吉圓”杯程序設計競賽

終于到了飯吉圓杯的開賽&#xff0c;這是EZ我參與的歷史上第一場ACM賽制的題目然而沒有罰時 不過題目很好&#xff0c;舉辦地也很成功&#xff0c;為法老點贊&#xff01;&#xff01;&#xff01; 這次和翰爺&#xff0c;吳駿達 dalao&#xff0c;陳樂揚dalao組的隊&#xff0…

談談數據分析 caoz_讓我們談談開放數據…

談談數據分析 caozAccording to the International Open Data Charter(1), it defines open data as those digital data that are made available with the technical and legal characteristics necessary so that they can be freely used, reused and redistributed by any…

數據創造價值_展示數據并創造價值

數據創造價值To create the maximum value, urgency, and leverage in a data partnership, you must present the data available for sale or partnership in a clear and comprehensive way. Partnerships are based upon the concept that you are offering value for valu…

Java入門系列-22-IO流

File類的使用 Java程序如何訪問文件&#xff1f;通過 java.io.File 類 使用File類需要先創建文件對象 File filenew File(String pathname);&#xff0c;創建時在構造函數中指定物理文件或目錄&#xff0c;然后通過文件對象的方法操作文件或目錄的屬性。 \ 是特殊字符&#xff…

缺了一部分

學Java好多年&#xff0c;也參與一次完整項目&#xff0c;覺得讓自己寫項目寫不出來&#xff0c;總覺得缺了一部分。 在這方面愚笨&#xff0c;不知道缺在哪里。以前覺得是知識不夠牢固&#xff0c;于是重復去學&#xff0c;發現就那些東西。如果沒有業務來熟悉的話&#xff0c…

卷積神經網絡——各種網絡的簡潔介紹和實現

各種網絡模型&#xff1a;來源《動手學深度學習》 一&#xff0c;卷積神經網絡&#xff08;LeNet&#xff09; LeNet分為卷積層塊和全連接層塊兩個部分。下面我們分別介紹這兩個模塊。 卷積層塊里的基本單位是卷積層后接最大池化層&#xff1a;卷積層用來識別圖像里的空間模…

數據中臺是下一代大數據_全棧數據科學:下一代數據科學家群體

數據中臺是下一代大數據重點 (Top highlight)Data science has been an eye-catching field for many years now to young individuals having formal education with a bachelors, masters or Ph.D. in computer science, statistics, business analytics, engineering manage…

net如何判斷瀏覽器的類別

回復&#xff1a;.net如何判斷瀏覽器的類別?瀏覽器型號&#xff1a;Request.Browser.Type 瀏覽器名稱&#xff1a;Request.Browser.browser 瀏覽器版本&#xff1a;Request.Browser.Version 瀏覽器Cookie&#xff1a;Request.Browser.Cookies 你的操作系統&#xff1a;Request…

AVS 端能力模塊

Mark 轉載于:https://www.cnblogs.com/clxye/p/9939333.html

pwn學習之四

本來以為應該能出一兩道ctf的pwn了&#xff0c;結果又被sctf打擊了一波。 bufoverflow_a 做這題時libc和堆地址都泄露完成了&#xff0c;卡在了unsorted bin attack上&#xff0c;由于delete會清0變量導致無法寫&#xff0c;一直沒構造出unsorted bin attack&#xff0c;后面根…

優化算法的簡潔實現

動量法 思想&#xff1a; 動量法使用了指數加權移動平均的思想。它將過去時間步的梯度做了加權平均&#xff0c;且權重按時間步指數衰減。 代碼&#xff1a; 在Gluon中&#xff0c;只需要在Trainer實例中通過momentum來指定動量超參數即可使用動量法。 d2l.train_gluon_ch7…

北方工業大學gpa計算_北方大學聯盟倉庫的探索性分析

北方工業大學gpa計算This is my firts publication here and i will start simple.這是我的第一篇出版物&#xff0c;這里我將簡單介紹 。 I want to make an exploratory data analysis of UFRN’s warehouse and answer some questions about the data using Python and Pow…

泰坦尼克數據集預測分析_探索性數據分析-泰坦尼克號數據集案例研究(第二部分)

泰坦尼克數據集預測分析Data is simply useless until you don’t know what it’s trying to tell you.除非您不知道數據在試圖告訴您什么&#xff0c;否則數據將毫無用處。 With this quote we’ll continue on our quest to find the hidden secrets of the Titanic. ‘The …

各種數據庫連接的總結

SQL數據庫的連接 return new SqlConnection("server127.0.0.1;databasepart;uidsa;pwd;"); oracle連接字符串 OracleConnection oCnn new OracleConnection("Data SourceORCL_SERVER;USERM70;PASSWORDmmm;");oledb連接數據庫return new OleDbConnection…

關于我

我是誰&#xff1f; Who am I&#xff1f;這是個哲學問題。。 簡單來說&#xff0c;我是Light&#xff0c;一個靠前端吃飯&#xff0c;又不想單單靠前端吃飯的Coder。 用以下幾點稍微給自己打下標簽&#xff1a; 工作了兩三年&#xff0c;對&#xff0c;我是16年畢業的90后一直…

L1和L2正則

https://blog.csdn.net/jinping_shi/article/details/52433975轉載于:https://www.cnblogs.com/zyber/p/9257843.html

基于PyTorch搭建CNN實現視頻動作分類任務代碼詳解

數據及具體講解來源&#xff1a; 基于PyTorch搭建CNN實現視頻動作分類任務 import torch import torch.nn as nn import torchvision.transforms as T import scipy.io from torch.utils.data import DataLoader,Dataset import os from PIL import Image from torch.autograd…

missforest_missforest最佳丟失數據插補算法

missforestMissing data often plagues real-world datasets, and hence there is tremendous value in imputing, or filling in, the missing values. Unfortunately, standard ‘lazy’ imputation methods like simply using the column median or average don’t work wel…

華碩猛禽1080ti_F-22猛禽動力回路的視頻分析

華碩猛禽1080tiThe F-22 Raptor has vectored thrust. This means that the engines don’t just push towards the front of the aircraft. Instead, the thrust can be directed upward or downward (from the rear of the jet). With this vectored thrust, the Raptor can …