继续上篇文章的学习《灵活掌握asp.net中gridview控件的多种使用方法(上)》,在此基础上巩固gridview控件的操作使用,更上一层楼。
11.GridView实现用“...”代替超长字符串:
效果图:
解决方法:数据绑定后过滤每一行即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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); } } |
调用的方法:
1
2
3
4
5
6
7
8
9
10
|
public string SubStr( string sString, int nLeng) { if (sString.Length <= nLeng) { return sString; } string sNewStr = sString.Substring(0, nLeng); sNewStr = sNewStr + "..." ; return sNewStr; } |
后台全部代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
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(); } } } |
12.GridView一般换行与强制换行:
效果图:
首先设置<asp:BoundField DataField="家庭住址" HeaderText="家庭住址" ItemStyle-Width="100" />
gridview里有一列绑定的数据很长,显示的时候在一行里面显示,页面拉得很宽。
原因是连续英文段为一个整体导致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。
如果要给所有的列增加此属性:
1
2
3
4
5
6
7
8
9
10
11
|
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。
13.GridView显示隐藏某一列:
本方案为月儿独创,不同于网上其他方式,我觉得用一个CheckBox更人性化,这样可以隐藏不必要的列,让用户自己选择需要出现的列,在处理多列时这是一个很好的解决方案!
效果图:
图1-开始
图2-点击显示的CheckBox后
解决方案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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!
后台全部代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
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()); } } |
前台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<!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显示隐藏列 </ title > </ head > < body style = "font-size=12px" > < form id = "form1" runat = "server" > < div > < asp:GridView ID = "GridView1" runat = "server" 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" Font-Size = "12px" OnCheckedChanged = "CheckBox1_CheckedChanged" Text = "显示隐藏家庭住址" /></ div > </ form > </ body > </ html > |
14.GridView弹出新页面/弹出制定大小位置新窗口:
效果图:
方案一:简单的方法,新窗口不固定大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< asp:GridView ID = "GridView1" runat = "server" 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是路径。
方案二:精确控制弹出窗口大小位置
1
2
|
< 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 > |
15.GridView固定表头(不用javascript只用CSS!,很好用):
效果图:
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<!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固定表头</ title > < style > .Freezing { position:relative ; table-layout:fixed; top:expression_r(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" 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" >
16.GridView合并表头多重表头无错完美版(以合并3列3行举例)
效果图:
后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
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 ; } } } |
前台:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<!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合并多重表头表头</ title > </ head > < body > < form id = "form1" runat = "server" > < div > < asp:GridView ID = "GridView1" runat = "server" 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 > |
17.GridView突出显示某一单元格(例如金额低于多少,分数不及格等)
效果图:
解决方案:主要是绑定后过滤
1
2
3
4
5
6
7
8
9
10
11
|
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(); |
全部后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
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(); } } |
前台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<!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" 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 > |
18.GridView加入自动求和求平均值小计
效果图:
解决方案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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(); } } |
后台全部代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
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" ,否则默认表头为隐藏的!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< asp:GridView ID = "GridView1" runat = "server" 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 > |
19.GridView数据导入Excel/Excel数据读入GridView
效果图:
解决方案:
页面增加一个按钮,单击事件添加如下方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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
后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
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) { } } |
前台:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< asp:GridView ID = "GridView1" runat = "server" 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数据的代码:这个很简单的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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(); } |
以上就是关于asp.net中gridview控件的多种使用方法,很全面,目的就是想让亲们玩转gridview控件,希望大家喜欢小编整理的这两篇文章。