WebForm GridView设置分页,编辑,更新,取消,删除,按钮,以及排序。
2017-11-03 18:07
836 查看
数据库:
首先要在GridView上取消掉 自动生成列(根据T-SQL)
[html]
view plain
copy
print?
AutoGenerateColumns="False"
添加BoundField,就是绑定列,设置DataField(绑定的列),HeaderText列标题。
实际就是下面的代码:
还需要开启:编辑,更新,取消,删除(CommandField),以及设置事件:
实际就是下面的代码:
[html]
view plain
copy
print?
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" >
<Columns>
<asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" />
<asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
直接上全部代码吧,时间关系:
WebForm1.aspx
[html]
view plain
copy
print?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UI.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" >
<Columns>
<asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" />
<asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
[csharp]
view plain
copy
print?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;
using System.Data;
namespace UI
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//这里给一个初始值 (ViewState是一个字典(服务器控件的一个跨页变量))
ViewState["SortOrder"] = "新闻标题";//排序表达式SortExpression实际就是DataField 就是T-SQL语句查询出来的列名
//排序表达式 实际就是设置按照哪个列进行排序而已
ViewState["SortDire"] = "ASC";//排序顺序(升序)
Bind();
}
}
//把绑定数据 写到一个方法里
private void Bind()
{
UserBLL ub = new UserBLL();
//(重点)设置一个标识(一般是主键)绑定在每一项上去,用于删除数据时,获取主键。(把主键id放在DataKeys)
this.GridView1.DataKeyNames = new string[] { "id" }; //这个是绑定在行上的
//排序
DataView view = ub.ShowAll().DefaultView;//从datatable取出dataview用于排序
//排序字符串 排序表达式(空格) 升序/逆序
string sort = ViewState["SortOrder"].ToString() + " " + ViewState["SortDire"].ToString();
//设置排序字符串
view.Sort = sort;
//绑定数据源
this.GridView1.DataSource = view;
this.GridView1.DataBind();
}
//下一页(用户点击页数按钮时)
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//当前页数等于 用户点击的那一页
this.GridView1.PageIndex = e.NewPageIndex;
//重新绑定
Bind();
}
//编辑时
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//设置编辑时的行 等于用户触发事件的这个行
this.GridView1.EditIndex = e.NewEditIndex;
//重新绑定
Bind();
}
//点击取消时(取消编辑)
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//设置当前选中行索引为-1(也就是没有)
this.GridView1.EditIndex = -1;
//重新绑定
Bind();
}
//编辑时的更新按钮
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//当前更新的行数
int index = e.RowIndex;
//(重点)获取格子里面,第index行,第0号单元格里面第0个控件(也就是TextBox)强转,获取值
string newsTitle= ((TextBox)this.GridView1.Rows[index].Cells[0].Controls[0]).Text.ToString();
string newsContent = ((TextBox)this.GridView1.Rows[index].Cells[1].Controls[0]).Text.ToString();
//这里的id是绑定上去的主键
int id = Convert.ToInt32(this.GridView1.DataKeys[index].Value) ;
UserBLL ub = new UserBLL();
News ne = new News();
ne.Id = id;
ne.Title = newsTitle;
ne.Content = newsContent;
if (ub.UpdateNews(ne) == 1)
{
//更新成功
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
else {
//更新失败
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
}
//点击删除时
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取产生事件的行
int index = e.RowIndex;
//获取主键
int key=(int) this.GridView1.DataKeys[index].Value;
UserBLL ub = new UserBLL();
if (ub.delNews(key) == 1)
{
//删除成功
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
else {
//删除失败
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
}
//双击表列标题 排序时
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
//产生点击事件的排序字符串
string expression = e.SortExpression;
if (ViewState["SortOrder"].ToString() == expression) //如果上次点击的是这个,就直接设置ASC,DESC
{
if (ViewState["SortDire"].ToString() == "ASC")
{
ViewState["SortDire"] = "DESC";
}
else
{
ViewState["SortDire"] = "ASC";
}
}
else {
//如果上次没有点击这个 就直接排序
ViewState["SortOrder"] = expression;
}
/////////////这里只是设置一些全局变量 实际排序操作 在 DataView的Sort排序字符串里面设置
Bind();//重新绑定
}
}
}
效果:
由于时间关系,就写到这里。都写了注释。
首先要在GridView上取消掉 自动生成列(根据T-SQL)
[html]
view plain
copy
print?
AutoGenerateColumns="False"
AutoGenerateColumns="False"
添加BoundField,就是绑定列,设置DataField(绑定的列),HeaderText列标题。
实际就是下面的代码:
还需要开启:编辑,更新,取消,删除(CommandField),以及设置事件:
实际就是下面的代码:
[html]
view plain
copy
print?
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" >
<Columns>
<asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" />
<asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" > <Columns> <asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" /> <asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" /> <asp:CommandField ShowEditButton="True" /> <asp:CommandField ShowDeleteButton="True" /> </Columns> </asp:GridView>
直接上全部代码吧,时间关系:
WebForm1.aspx
[html]
view plain
copy
print?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UI.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" >
<Columns>
<asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" />
<asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UI.WebForm1" %>WebForm1.aspx.cs
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" AllowSorting="True" OnRowDeleting="GridView1_RowDeleting" OnRowUpdating="GridView1_RowUpdating" OnSorting="GridView1_Sorting" > <Columns> <asp:BoundField DataField="新闻标题" HeaderText="新闻标题" SortExpression="新闻标题" /> <asp:BoundField DataField="新闻内容" HeaderText="新闻内容" SortExpression="新闻内容" /> <asp:CommandField ShowEditButton="True" /> <asp:CommandField ShowDeleteButton="True" /> </Columns> </asp:GridView>
</form>
</body>
</html>
[csharp]
view plain
copy
print?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Model;
using System.Data;
namespace UI
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//这里给一个初始值 (ViewState是一个字典(服务器控件的一个跨页变量))
ViewState["SortOrder"] = "新闻标题";//排序表达式SortExpression实际就是DataField 就是T-SQL语句查询出来的列名
//排序表达式 实际就是设置按照哪个列进行排序而已
ViewState["SortDire"] = "ASC";//排序顺序(升序)
Bind();
}
}
//把绑定数据 写到一个方法里
private void Bind()
{
UserBLL ub = new UserBLL();
//(重点)设置一个标识(一般是主键)绑定在每一项上去,用于删除数据时,获取主键。(把主键id放在DataKeys)
this.GridView1.DataKeyNames = new string[] { "id" }; //这个是绑定在行上的
//排序
DataView view = ub.ShowAll().DefaultView;//从datatable取出dataview用于排序
//排序字符串 排序表达式(空格) 升序/逆序
string sort = ViewState["SortOrder"].ToString() + " " + ViewState["SortDire"].ToString();
//设置排序字符串
view.Sort = sort;
//绑定数据源
this.GridView1.DataSource = view;
this.GridView1.DataBind();
}
//下一页(用户点击页数按钮时)
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//当前页数等于 用户点击的那一页
this.GridView1.PageIndex = e.NewPageIndex;
//重新绑定
Bind();
}
//编辑时
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
//设置编辑时的行 等于用户触发事件的这个行
this.GridView1.EditIndex = e.NewEditIndex;
//重新绑定
Bind();
}
//点击取消时(取消编辑)
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//设置当前选中行索引为-1(也就是没有)
this.GridView1.EditIndex = -1;
//重新绑定
Bind();
}
//编辑时的更新按钮
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//当前更新的行数
int index = e.RowIndex;
//(重点)获取格子里面,第index行,第0号单元格里面第0个控件(也就是TextBox)强转,获取值
string newsTitle= ((TextBox)this.GridView1.Rows[index].Cells[0].Controls[0]).Text.ToString();
string newsContent = ((TextBox)this.GridView1.Rows[index].Cells[1].Controls[0]).Text.ToString();
//这里的id是绑定上去的主键
int id = Convert.ToInt32(this.GridView1.DataKeys[index].Value) ;
UserBLL ub = new UserBLL();
News ne = new News();
ne.Id = id;
ne.Title = newsTitle;
ne.Content = newsContent;
if (ub.UpdateNews(ne) == 1)
{
//更新成功
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
else {
//更新失败
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
}
//点击删除时
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取产生事件的行
int index = e.RowIndex;
//获取主键
int key=(int) this.GridView1.DataKeys[index].Value;
UserBLL ub = new UserBLL();
if (ub.delNews(key) == 1)
{
//删除成功
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
else {
//删除失败
this.GridView1.EditIndex = -1;//设置编辑为否
this.Bind();//重新绑定
}
}
//双击表列标题 排序时
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
//产生点击事件的排序字符串
string expression = e.SortExpression;
if (ViewState["SortOrder"].ToString() == expression) //如果上次点击的是这个,就直接设置ASC,DESC
{
if (ViewState["SortDire"].ToString() == "ASC")
{
ViewState["SortDire"] = "DESC";
}
else
{
ViewState["SortDire"] = "ASC";
}
}
else {
//如果上次没有点击这个 就直接排序
ViewState["SortOrder"] = expression;
}
/////////////这里只是设置一些全局变量 实际排序操作 在 DataView的Sort排序字符串里面设置
Bind();//重新绑定
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BLL; using Model; using System.Data; namespace UI { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //这里给一个初始值 (ViewState是一个字典(服务器控件的一个跨页变量)) ViewState["SortOrder"] = "新闻标题";//排序表达式SortExpression实际就是DataField 就是T-SQL语句查询出来的列名 //排序表达式 实际就是设置按照哪个列进行排序而已 ViewState["SortDire"] = "ASC";//排序顺序(升序) Bind(); } } //把绑定数据 写到一个方法里 private void Bind() { UserBLL ub = new UserBLL(); //(重点)设置一个标识(一般是主键)绑定在每一项上去,用于删除数据时,获取主键。(把主键id放在DataKeys) this.GridView1.DataKeyNames = new string[] { "id" }; //这个是绑定在行上的 //排序 DataView view = ub.ShowAll().DefaultView;//从datatable取出dataview用于排序 //排序字符串 排序表达式(空格) 升序/逆序 string sort = ViewState["SortOrder"].ToString() + " " + ViewState["SortDire"].ToString(); //设置排序字符串 view.Sort = sort; //绑定数据源 this.GridView1.DataSource = view; this.GridView1.DataBind(); } //下一页(用户点击页数按钮时) protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { //当前页数等于 用户点击的那一页 this.GridView1.PageIndex = e.NewPageIndex; //重新绑定 Bind(); } //编辑时 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { //设置编辑时的行 等于用户触发事件的这个行 this.GridView1.EditIndex = e.NewEditIndex; //重新绑定 Bind(); } //点击取消时(取消编辑) protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { //设置当前选中行索引为-1(也就是没有) this.GridView1.EditIndex = -1; //重新绑定 Bind(); } //编辑时的更新按钮 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { //当前更新的行数 int index = e.RowIndex; //(重点)获取格子里面,第index行,第0号单元格里面第0个控件(也就是TextBox)强转,获取值 string newsTitle= ((TextBox)this.GridView1.Rows[index].Cells[0].Controls[0]).Text.ToString(); string newsContent = ((TextBox)this.GridView1.Rows[index].Cells[1].Controls[0]).Text.ToString(); //这里的id是绑定上去的主键 int id = Convert.ToInt32(this.GridView1.DataKeys[index].Value) ; UserBLL ub = new UserBLL(); News ne = new News(); ne.Id = id; ne.Title = newsTitle; ne.Content = newsContent; if (ub.UpdateNews(ne) == 1) { //更新成功 this.GridView1.EditIndex = -1;//设置编辑为否 this.Bind();//重新绑定 } else { //更新失败 this.GridView1.EditIndex = -1;//设置编辑为否 this.Bind();//重新绑定 } } //点击删除时 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //获取产生事件的行 int index = e.RowIndex; //获取主键 int key=(int) this.GridView1.DataKeys[index].Value; UserBLL ub = new UserBLL(); if (ub.delNews(key) == 1) { //删除成功 this.GridView1.EditIndex = -1;//设置编辑为否 this.Bind();//重新绑定 } else { //删除失败 this.GridView1.EditIndex = -1;//设置编辑为否 this.Bind();//重新绑定 } } //双击表列标题 排序时 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { //产生点击事件的排序字符串 string expression = e.SortExpression; if (ViewState["SortOrder"].ToString() == expression) //如果上次点击的是这个,就直接设置ASC,DESC { if (ViewState["SortDire"].ToString() == "ASC") { ViewState["SortDire"] = "DESC"; } else { ViewState["SortDire"] = "ASC"; } } else { //如果上次没有点击这个 就直接排序 ViewState["SortOrder"] = expression; } /////////////这里只是设置一些全局变量 实际排序操作 在 DataView的Sort排序字符串里面设置 Bind();//重新绑定 } } }
效果:
由于时间关系,就写到这里。都写了注释。
相关文章推荐
- WebForm GridView设置分页,编辑,更新,取消,删除,按钮,以及排序。
- GridView绑定,编辑,更新,取消,删除,排序
- [Asp.Net]GridView无代码分页排序,选中,编辑,取消,删除,正反双向排序,下拉菜单DropDownList结合
- GridView编辑,更新,取消,排序,全选及存储过程分页
- 1.GridView无代码分页排序 GridView选中,编辑,取消,删除:
- GridView操作大全 无代码分页排序 正反双向排序 和下拉菜单DropDownList结合,选中,编辑,取消,删除
- GridView操作大全 无代码分页排序 正反双向排序 和下拉菜单DropDownList结合,选中,编辑,取消,删除
- GridView自定义模板编辑 更新 取消 删除
- DataList编辑、更新、取消、删除、分页(分页控件 AspNetPager.dll)
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- 使用gridview实现编辑、更新、取消功能和删除功能
- ASP.NET 中 对GridView(网格视图)的查、分页、编辑更新、删除操作
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除、导出、突出显示等常见应用实现(cs)
- DataList的编辑、更新、删除、全选、分页以及 <EditItemTemplate>模版中的DropDownList的数据绑定
- GridView的选择、取消、编辑、删除、更新事件代码
- 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
- DataList编辑、更新、取消、删除、分页(分页控件AspNetPager.dll)
- GridView中用CommandField实现简单的编辑(更新,取消),删除
- DataList编辑、更新、取消、删除、分页