GridView控件是一种常见的Web控件,主要用于展示数据列表和进行数据操作。在本文中,我们将详细介绍GridView控件的使用方法、属性、方法和事件,并结合实例进行说明。
一、GridView控件的基本介绍
GridView控件是ASP.NET Web控件之一,主要用于展示数据列表和进行数据操作,如添加、编辑、删除、排序、分页等。GridView控件支持绑定到数据源,并自动将数据源中的数据绑定到控件上,同时可以通过设置属性、方法和事件等进行自定义操作。
二、GridView控件的使用方法
(一)创建GridView控件
在ASP.NET Web应用程序中创建GridView控件的方法有两种:
1.通过拖拽方式创建
在Visual Studio中,可以在工具箱中找到GridView控件,在设计视图中直接拖拽到页面中即可。
2.手动创建
在ASP.NET Web应用程序中,也可以手动创建GridView控件。打开aspx页面源代码,添加以下代码:
HTML标记或控件,此时可以使用模板字段。模板字段允许我们自定义列的内容,可以在其中嵌套各种ASP.NET Web控件或HTML标记。例如:
(四)设置样式
GridView控件提供了许多样式属性,如BorderColor、BorderStyle、BorderWidth、HeaderStyle、RowStyle、AlternatingRowStyle、PagerStyle等,可以用于设置控件的边框、标题、行样式、交替行样式、分页样式等。例如:
......
(五)事件处理
GridView控件提供了多个事件,如RowDataBound、RowEditing、RowUpdating、RowDeleting、PageIndexChanging等,可以用于在不同的操作场景下处理数据。例如:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
sql = "DELETE FROM t_student WHERE id=" + id;
ExecuteSql(sql);
BindData();
e.Cancel = true;
}
(六)分页
GridView控件可以自动进行分页,也可以通过设置PageIndex属性和PageSize属性来自定义分页。例如:
......
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex;
BindData();
}
三、GridView控件的属性
(一)数据源属性
1.DataSource:获取或设置要绑定到控件的数据源。
2.DataKeyNames:获取或设置数据源中用作控件的关键字段。
3.DataBind():将数据源绑定到控件上。
(二)样式属性
1.BorderColor:获取或设置控件的边框颜色。
2.BorderStyle:获取或设置控件的边框线条样式。
3.BorderWidth:获取或设置控件的边框宽度。
4.HeaderStyle:获取或设置控件标题的样式。
5.RowStyle:获取或设置控件行的样式。
6.AlternatingRowStyle:获取或设置控件交替行的样式。
7.PagerStyle:获取或设置控件分页的样式。
(三)分页属性
1.AllowPaging:获取或设置控件是否启用分页。
2.PageSize:获取或设置控件每页显示的项数。
3.PageIndex:获取或设置控件当前页的索引。
4.PagerSettings:获取或设置控件分页的相关设置。
(四)行选择属性
1.AutoGenerateSelectButton:获取或设置控件是否在每行后自动生成选择按钮。
2.AutoGenerateCheckBoxes:获取或设置控件是否在每行后自动生成复选框。
3.SelectedRow:获取或设置当前选择的行。
四、GridView控件的方法
1.DataBind():将数据源绑定到控件上。
2.RenderControl():将控件呈现为HTML标记并发送到客户端。
3.Sort(String, SortDirection):对控件中的项进行排序。
5、GridView控件的事件
1.RowDataBound:在为数据源中的行呈现控件时发生。
2.RowEditing:在编辑模式中为控件中的行呈现时发生。
3.RowUpdating:在更新控件中的行时发生。
4.RowDeleting:在从控件中删除行时发生。
5.RowCommand:在控件中的行引发命令事件时发生。
6.PageIndexChanging:在控件分页时发生。
五、GridView控件的实例说明
以下是一个简单的GridView控件示例,展示了如何使用GridView控件进行数据绑定、分页、排序、编辑、删除等操作。
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
Default.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
private string connectionString = @"Server=.\SQLEXPRESS;Database=test;Trusted_Connection=True;";
private string sql;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindData();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
if (ViewState["SortExpression"] == null || ViewState["SortExpression"].ToString() != e.SortExpression)
{
ViewState["SortExpression"] = e.SortExpression;
ViewState["SortDirection"] = SortDirection.Ascending;
}
else if (ViewState["SortDirection"].ToString() == SortDirection.Ascending.ToString())
{
ViewState["SortDirection"] = SortDirection.Descending;
}
else
{
ViewState["SortDirection"] = SortDirection.Ascending;
}
BindData();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindData();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindData();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
string name = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("tbName")).Text.Trim();
int age = Convert.ToInt32(((TextBox)GridView1.Rows[e.RowIndex].FindControl("tbAge")).Text.Trim());
sql = "UPDATE t_student SET name='" + name + "', age=" + age + " WHERE id=" + id;
ExecuteSql(sql);
GridView1.EditIndex = -1;
BindData();
e.Cancel = true;
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
sql = "DELETE FROM t_student WHERE id=" + id;
ExecuteSql(sql);
BindData();
e.Cancel = true;
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "EDIT")
{
int id = Convert.ToInt32(e.CommandArgument);
GridView1.EditIndex = GetRowIndex(id);
BindData();
}
else if (e.CommandName == "DELETE")
{
int id = Convert.ToInt32(e.CommandArgument);
sql = "DELETE FROM t_student WHERE id=" + id;
ExecuteSql(sql);
BindData();
}
else if (e.CommandName == "UPDATE")
{
int rowIndex = GetRowIndex(e.CommandArgument);
int id = Convert.ToInt32(e.CommandArgument);
string name = ((TextBox)GridView1.Rows[rowIndex].FindControl("tbName")).Text.Trim();
int age = Convert.ToInt32(((TextBox)GridView1.Rows[rowIndex].FindControl("tbAge")).Text.Trim());
sql = "UPDATE t_student SET name='" + name + "', age=" + age + " WHERE id=" + id;
ExecuteSql(sql);
GridView1.EditIndex = -1;
BindData();
}
else if (e.CommandName == "CANCEL")
{
GridView1.EditIndex = -1;
BindData();
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbDelete = (LinkButton)e.Row.FindControl("lbDelete");
if (lbDelete != null)
{
lbDelete.Attributes.Add("onclick", "return confirm('确定删除吗?');");
}
}
}
private void BindData()
{
sql = "SELECT * FROM t_student";
if (ViewState["SortExpression"] != null && ViewState["SortDirection"] != null)
{
sql += " ORDER BY " + ViewState["SortExpression"].ToString() + " " + ViewState["SortDirection"].ToString();
}
DataTable dt = GetData(sql);
GridView1.DataSource = dt;
GridView1.DataBind();
}
private DataTable GetData(string sql)
{
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
private void ExecuteSql(string sql)
{
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
private int GetRowIndex(object commandArgument)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if (Convert.ToInt32(GridView1.DataKeys[i].Value) == Convert.ToInt32(commandArgument))
{
return i;
}
}
return -1;
}
}
以上示例展示了如何使用GridView控件进行数据绑定、分页、排序、编辑、删除等操作,其中包括GridView控件的多个属性、方法和事件的使用方法。通过学习本文,相信读者对GridView控件已经有了更深入的了解和掌握。
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复