GridView是ASP.NET Web Forms中的一个数据绑定控件,用于在页面中显示数据。GridView提供了丰富的功能,如自动生成列、分页、排序、编辑、删除、选择等。本文将介绍GridView控件的使用。
1. 数据绑定
GridView控件通常用于展示从后台取得的数据。可以使用数据源控件绑定数据,如SqlDataSource、ObjectDataSource、XmlDataSource等。这里以SqlDataSource为例进行说明。
在.aspx页面中,添加一个GridView控件和一个SqlDataSource控件:
```
SelectCommand="SELECT * FROM [Users]">
```
连接字符串可以在Web.config文件中定义:
```
providerName="System.Data.SqlClient"/>
```
在Page_Load事件中,将数据源控件绑定到GridView:
```
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}
```
这样GridView就可以显示从数据库中取得的数据了。
2. 自定义列
GridView控件自动生成列,但有时需要自定义列。可以在GridView的TemplateField中添加控件,如Label、TextBox、Image等。可以通过绑定数据来设置控件的值。
例如,可以将Users表中的Gender字段值为1的替换为“男”,为0的替换为“女”:
```
```
也可以将Users表中的Birthday字段显示为“yyyy-MM-dd”格式:
```
```
3. 分页控制
GridView控件提供了内置的分页功能,可以在控件属性中设置:
```
``` 其中,AllowPaging设置为True表示启用分页,PageSize设置为每页显示的记录数,OnPageIndexChanging设置为分页处理事件。 可以在Page_Load事件中设置起始页: ``` protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GridView1.PageIndex = 0; } } ``` 同时,需要在PageIndexChanging事件中重新绑定数据源: ``` protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } ``` 4. 排序控制 GridView控件的排序功能可以通过在GridView的属性中设置实现: ``` ``` 其中,AllowSorting设置为True表示启用排序功能,OnSorting设置为排序处理事件。 可以在GridView数据绑定完成后自动对首列进行排序: ``` protected void GridView1_DataBound(object sender, EventArgs e) { if (GridView1.Rows.Count > 0) { GridView1.HeaderRow.Cells[0].CssClass = "sortAsc"; GridView1.HeaderRow.Cells[1].CssClass = "nosort"; for (int i = 1; i < GridView1.Rows.Count; i++) { GridView1.Rows[i].Cells[0].Text = i.ToString(); } } } ``` 其中,sortAsc是CSS样式,表示升序排列的图标。 在Sorting事件中,需要重新绑定数据源,并设置排序: ``` protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { string sortDirection = "ASC"; if (ViewState["sortDirection"] != null) { sortDirection = ViewState["sortDirection"].ToString(); if (sortDirection == "ASC") { sortDirection = "DESC"; } else { sortDirection = "ASC"; } } ViewState["sortColumn"] = e.SortExpression; ViewState["sortDirection"] = sortDirection; GridView1.DataSource = GetSortedData(e.SortExpression, sortDirection); GridView1.DataBind(); } ``` 需要注意的是,需要在ViewState中保存排序的列和方向,以便下次排序时使用。 5. 编辑控制 GridView控件的编辑功能可以通过设置AutoGenerateEditButton或AutoGenerateColumns属性实现。当设置AutoGenerateEditButton为True时,在最后一列自动生成编辑按钮。 ``` ``` 当设置AutoGenerateColumns为False时,需要手工添加编辑按钮: ``` OnRowUpdating="GridView1_RowUpdating"> ``` 需要注意的是,编辑功能需要在GridView绑定数据之前开启。如果数据源为SqlDataSource,可以通过设置SqlDataSource的UpdateCommand属性实现更新功能: ``` SelectCommand="SELECT * FROM [Users]" UpdateCommand="UPDATE [Users] SET [Name]=@Name,[Gender]=@Gender,[Birthday]=@Birthday WHERE [Id]=@Id"> ``` 6. 删除控制 GridView控件的删除功能可以通过设置AutoGenerateDeleteButton或AutoGenerateColumns属性实现。当设置AutoGenerateDeleteButton为True时,在最后一列自动生成删除按钮。 ``` ``` 当设置AutoGenerateColumns为False时,需要手工添加删除按钮: ``` ``` 如果数据源为SqlDataSource,可以通过设置SqlDataSource的DeleteCommand属性实现删除功能: ``` SelectCommand="SELECT * FROM [Users]" DeleteCommand="DELETE FROM [Users] WHERE [Id]=@Id"> ``` 7. 数据选择 GridView控件有一个选择功能,可以在属性中设置: ``` ``` 其中,AllowSorting设置为True表示启用选择功能,OnSelectedIndexChanging设置为选择处理事件,DataKeyNames设置为数据源中的主键名。 在SelectedIndexChanged事件中,可以获取选择行的主键值: ``` protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { int id = (int)GridView1.DataKeys[e.NewSelectedIndex].Value; } ``` 此外,还可以根据选择行控制其他控件的显示与隐藏: ``` ``` 在SelectedIndexChanged事件中,可以根据GridView选中行的主键值设置DetailsView的数据源,并显示DetailsView: ``` protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { int id = (int)GridView1.DataKeys[e.NewSelectedIndex].Value; SqlDataSource2.SelectCommand = "SELECT [Id],[Name],[Gender],[Birthday] FROM [Users] WHERE [Id]=" + id; DetailsView1.DataSource = SqlDataSource2; DetailsView1.DataBind(); DetailsView1.Visible = true; } ``` 以上就是GridView控件的使用。GridView不仅仅可以用来展示数据,还可以实现分页、排序、编辑、删除、选择等功能,非常实用。同时也可以增强用户的交互体验。
如果你喜欢我们的文章,欢迎您分享或收藏为众码农的文章! 我们网站的目标是帮助每一个对编程和网站建设以及各类acg,galgame,SLG游戏感兴趣的人,无论他们的水平和经验如何。我们相信,只要有热情和毅力,任何人都可以成为一个优秀的程序员。欢迎你加入我们,开始你的美妙旅程!www.weizhongchou.cn
发表评论 取消回复