gridview控件使用详解

GridView是ASP.NET Web Forms中的一个数据绑定控件,用于在页面中显示数据。GridView提供了丰富的功能,如自动生成列、分页、排序、编辑、删除、选择等。本文将介绍GridView控件的使用。

1. 数据绑定

GridView控件通常用于展示从后台取得的数据。可以使用数据源控件绑定数据,如SqlDataSource、ObjectDataSource、XmlDataSource等。这里以SqlDataSource为例进行说明。

在.aspx页面中,添加一个GridView控件和一个SqlDataSource控件:

```

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT * FROM [Users]">

```

连接字符串可以在Web.config文件中定义:

```

connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=True"

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的替换为“女”:

```

Text='<%# Eval("Gender").ToString()=="1" ? "男" : "女" %>'>

```

也可以将Users表中的Birthday字段显示为“yyyy-MM-dd”格式:

```

Text='<%# Eval("Birthday", "{0:yyyy-MM-dd}") %>'>

```

3. 分页控制

GridView控件提供了内置的分页功能,可以在控件属性中设置:

```

OnPageIndexChanging="GridView1_PageIndexChanging">

```

其中,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的属性中设置实现:

```

OnSorting="GridView1_Sorting">

```

其中,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时,需要手工添加编辑按钮:

```

OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit"

OnRowUpdating="GridView1_RowUpdating">

```

需要注意的是,编辑功能需要在GridView绑定数据之前开启。如果数据源为SqlDataSource,可以通过设置SqlDataSource的UpdateCommand属性实现更新功能:

```

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

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时,需要手工添加删除按钮:

```

OnRowDeleting="GridView1_RowDeleting">

```

如果数据源为SqlDataSource,可以通过设置SqlDataSource的DeleteCommand属性实现删除功能:

```

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT * FROM [Users]"

DeleteCommand="DELETE FROM [Users] WHERE [Id]=@Id">

```

7. 数据选择

GridView控件有一个选择功能,可以在属性中设置:

```

OnSelectedIndexChanging="GridView1_SelectedIndexChanging" DataKeyNames="Id">

```

其中,AllowSorting设置为True表示启用选择功能,OnSelectedIndexChanging设置为选择处理事件,DataKeyNames设置为数据源中的主键名。

在SelectedIndexChanged事件中,可以获取选择行的主键值:

```

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

{

int id = (int)GridView1.DataKeys[e.NewSelectedIndex].Value;

}

```

此外,还可以根据选择行控制其他控件的显示与隐藏:

```

OnSelectedIndexChanging="GridView1_SelectedIndexChanging" DataKeyNames="Id">

```

在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不仅仅可以用来展示数据,还可以实现分页、排序、编辑、删除、选择等功能,非常实用。同时也可以增强用户的交互体验。


点赞(10) 打赏
如果你喜欢我们的文章,欢迎您分享或收藏为众码农的文章! 我们网站的目标是帮助每一个对编程和网站建设以及各类acg,galgame,SLG游戏感兴趣的人,无论他们的水平和经验如何。我们相信,只要有热情和毅力,任何人都可以成为一个优秀的程序员。欢迎你加入我们,开始你的美妙旅程!www.weizhongchou.cn

评论列表 共有 0 条评论

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