900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > ASP.NET GridView控件常用功能

ASP.NET GridView控件常用功能

时间:2018-09-06 07:04:38

相关推荐

ASP.NET GridView控件常用功能

GridView控件常用功能

一、分页显示二、排序数据三、实现全选和不全选四、对数据进行编辑操作五、删除数据六、高亮显示鼠标所在行七、设置数据显示格式八、单击控件某行按钮时,刷新页面不会回到页面顶端

一、分页显示

1.将GridView控件的AllowPaging属性设置为true,表示允许分页,控件下方会出现页码,如下图;

2.PageSize属性表示每个页面显示的记录数,设置每页所需的记录数;

3.在GridView控件中添加PageIndexChanging事件,在事件中设置GridView控件的PageIndex属性为当前页的索引值,并重新绑定GridView控件。

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){GridView1.PageIndex = e.NewPageIndex; //将GridView控件的PageIndex设置为当前页GridViewBind();}/// <summary>/// 控件页面数据绑定,下文若无特别说明,默认使用当前方法绑定页面数据/// </summary>private void GridViewBind(){SqlConnection conn = GetConnection();string sqlStr = "select * from tb_Login";SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);DataSet ds = new DataSet();sda.Fill(ds);GridView1.DataSource = ds;GridView1.DataBind();}

二、排序数据

1.往GridView添加属性AllowSorting=true,GridView中的列名会变成可点击状态,在列中添加SortExpression属性,该属性设置排序表达式,需和字段相同。如图:

2.往GridView的OnSorting响应事件中添加GridView1_Sorting方法。

<asp:GridView runat="server" ID="GridView1" AllowSorting="true" AutoGenerateColumns="false" OnSorting="GridView1_Sorting"><Columns><asp:BoundField DataField="id" HeaderText="编号" SortExpression="id" /><asp:BoundField DataField="name" HeaderText="姓名" SortExpression="name" /><asp:BoundField DataField="pass" HeaderText="密码" SortExpression="pass" /></Columns></asp:GridView>

3.在页面后台代码中的Page_Load方法中,用视图状态ViewState来保存我们要设定的默认排序方式。

protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){ViewState["SortOrder"] = "ID";//默认以ID字段排序ViewState["OrderDire"] = "ASC"; //默认为ASC表示升序,DESC为降序GridViewBind();}}

4.在上述所调用的GridViewBind方法中,设置数据视图的Sort属性。Sort属性设置可以在代码中对DataView的Sort属性按F12进入详细说明,如下图

/// <summary>/// 控件页面数据绑定/// </summary>private void GridViewBind(){SqlConnection conn = GetConnection();string sqlStr = "select * from tb_Login";SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn);DataSet ds = new DataSet();sda.Fill(ds, "tb_Login");DataView dv = ds.Tables[0].DefaultView;//注意列名和排序方式中间加个空格,不加的话会出现比如找不到IDASC列的错误dv.Sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];GridView1.DataSource = dv;GridView1.DataBind();}

5.对GridView控件的Sorting事件中实现指定的排序,从ViewState中取得指定的排序表达式,判断是否要改变当前的排序方式;并设置新的排序表达式,重新绑定数据。

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e){if (ViewState["OrderDire"].ToString() == "Desc")ViewState["OrderDire"] = "ASC";else ViewState["OrderDire"] = "Desc";ViewState["SortOrder"] = e.SortExpression;//设置要排序相应的字段GridViewBind();}

三、实现全选和不全选

1.添加GridView控件和一个CheckBox控件

2.在GridView控件添加模板列,在模板列中添加CheckBox控件

<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="False"><Columns><asp:TemplateField><ItemTemplate><asp:CheckBox ID="chkCheck" runat="server" /></ItemTemplate></asp:TemplateField><asp:BoundField DataField="ID" HeaderText="编号" /><asp:BoundField DataField="Name" HeaderText="姓名" /><asp:BoundField DataField="Pass" HeaderText="密码" /></Columns></asp:GridView><asp:CheckBox ID="chkAll" Text="全选" runat="server" OnCheckedChanged="chkAll_CheckedChanged" AutoPostBack="True" />

效果如下:

3.设置全选复选框的OnCheckedChanged事件

protected void chkAll_CheckedChanged(object sender, EventArgs e){//循环访问GridView控件的每一项并通过FindControl方法获取模板列中的CheckBox控件for (int i = 0; i < GridView1.Rows.Count; i++){//建立模板列中CheckBox控件的引用CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("chkCheck");if (chkAll.Checked == true) chk.Checked = true;else chk.Checked = false;}}

注意:需要对全选CheckBox控件的AutoPostback属性设置为True,不然表单提交,服务器获取不到更改状态

四、对数据进行编辑操作

GridView控件的按钮列中包括Edit、Update、Cancel按钮,分别触发控件的编辑、更新、取消事件。

1.在GridView控件中添加编辑列

<asp:gridview runat="server" id="GridView2" autogeneratecolumns="False" onrowcancelingedit="GridView1_RowCancelingEdit"onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating" onrowdatabound="GridView1_RowDataBound"><Columns><asp:BoundField DataField="ID" HeaderText="编号" /><asp:BoundField DataField="Name" HeaderText="姓名" /><asp:BoundField DataField="Pass" HeaderText="密码" /><%-- CommandField显示用来执行执行选择、编辑或删除操作的预定义命令按钮,可通过ButtonType属性将其设置为图片、按钮等外观,默认外观为超链接--%><asp:CommandField ShowEditButton="true" /></Columns></asp:gridview>

如图所示:

2.分别添加用户点击编辑、更新、取消时的事件响应代码

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){//设置GridView控件的编辑项的索引为选择的当前索引GridView1.EditIndex = e.NewEditIndex;GridViewBind();}protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){string id = GridView1.DataKeys[e.RowIndex].Value.ToString();string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;string pass = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;string sqlStr = "update tb_Login set name ='" + name + "',pass='" + pass + "' where id ='" + id + "'";SqlConnection conn = getConnection(); //获取Connection对象方法,实现代码不作阐述conn.Open();SqlCommand cmd = new SqlCommand(sqlStr, conn);cmd.ExecuteNonQuery();cmd.Dispose();conn.Close();GridView1.EditIndex = -1;GridViewBind(); }protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e){//设置GridView控件的编辑项的索引为-1,即取消编辑GridView1.EditIndex = -1;GridViewBind();}

点击控件时会刷新重新加载页面,页面表单会回发编辑前的数据;确保加载数据代码中有IsPostBack判断

protected void Page_Load(object sender, EventArgs e){if (!IsPostBack) //判断是否为初次加载还是页面回发{GridViewBind();}}

五、删除数据

1.在GridView控件列中添加CommandField列并指明为“删除”按钮,方法同四。

2.编辑RowDeleting事件响应代码

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e){string sqlStr = "delete from tb_Login where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";SqlConnection conn = getConnection();//获取Connection对象方法,不作阐述SqlCommand cmd = new SqlCommand(sqlStr, conn);conn.Open();cmd.ExecuteNonQuery();conn.Close();GridViewBind();}

在单击删除按钮时可以设置弹出一个确认提示框

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow) //判断是否为数据绑定行{((LinkButton)(e.Row.Cells[4].Controls[0])).Attributes.Add("onclick","return confirm('是否确认删除?')");}}

六、高亮显示鼠标所在行

在GridView中,随着鼠标移动,高亮显示鼠标所在行,主要在GridView控件中的RowDataBound事件中实现。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow) //判断是否为数据绑定行{e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor;");}}

七、设置数据显示格式

设置GridView控件中指定列的数据显示格式,主要在RowDataBound事件中实现。当数据源绑定到GridView控件中的每一行时,将触发RowDataBound事件。这边用事件参数的GridViewEventArgs e的Row属性的Cells定位到需要设置显示格式的单元格,再通过字符串格式化将格式化后的数据赋值给单元格。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow) //判断是否为数据绑定行{//将表格中的数字以人民币格式显示,其他格式自行查找e.Row.Cells[2].Text = string.Format("{0,C2}",Convert.ToDouble(e.Row.Cells[2].Text));}}

八、单击控件某行按钮时,刷新页面不会回到页面顶端

当GridView中的显示的数据很多时,经常会遇到这样的问题,即单击了GridView中的某个按钮时,页面重新刷新,回到页面的顶部,需要重新定位到原来的位置,造成不必要的麻烦。可以再中添加MaintainScrollPositionOnPostback属性,作用顾名思义,在网页刷新后仍维持原来的位置。

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true"%>

【相关参考】

[1]: 【利用GridView自带的Sorting方法进行表头排序】 /hq0927/article/details/79912829

[2]: 【IsPostback的原理】/knowledgesea/archive//05/30/2524994.html

[3]: 【e.Row.RowType == DataControlRowType.DataRow诠释(实例解释)】/zhchongyao/archive//12/25/1632029.html

[4]: 【中控件的Attributes用法】/qk/p/4424077.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。