GridView控件详解

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" %>

PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging" OnSorting="GridView1_Sorting"

OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing"

OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating"

OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound">

runat="server" Text="编辑" />

runat="server" Text="删除" />

runat="server" Text="更新" />

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内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(14) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部