【asp.net】GridView数据的编辑
2015-08-12 16:03
561 查看
·在新闻发布系统中,牛腩老师实现了点击编辑在表格中修改信息,使用的是Ajax,在总结GridView控件中突然发现了这个控件也有自带的编辑功能,于是研究了一段时间,虽然没有牛腩老师的方便和那样的效果,但是使用起来也是还可以的。
闲话少说,上代码
html代码
后台代码
一些错误及处理方法
![](http://img.blog.csdn.net/20150812153549795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解决方法:产生这样的错误是因为,我并没有在GridView的属性中为“取消”添加事件。同样的,对于编辑和更新事件我们都是要添加的。
![](http://img.blog.csdn.net/20150812154046951?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
此行代码的作用是获得编辑行的主键的值,因为在编辑的过程中AdminID这个信息是不允许被编辑的。在属性中添加了DataKeyNames这个属性,是为了方便我们获取主键。如果显示中并没有显示主键使用这个方法就可以获取到主键。
PS:不允许修改的信息是使用模板方法绑定的,而允许修改的信息是使用简单绑定的。因为单击编辑时,只能对简单绑定的数据起作用。
一些说明:
1.在后台代码的更新事件中,已经可以明确的获取修改行的主键值和修改后的数据,但是在示例代码中并没有添加向数据库中更新信息的操作。
2.在取消编辑(更新中也需要取消编辑)时需要重新从数据库中获取数据并重新绑定。示例的代码是从session会话中得到的数据,所以更新修改后并没有显示修改后的数据。
总结
在实现这个功能的过程中有遇到了好多的错误,在解决这些错误的过错中,不断的调试代码让我对这个功能的实现的印象更加深刻了,同时当一个困扰你一天的错误被你解决了,我想这其中的心情大家都懂的。
闲话少说,上代码
html代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridViewDemo.aspx.cs" Inherits="aspnetDemo.GridViewDemo" %> <!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>GridView的数据编辑</title> </head> <body> <form id="form1" runat="server"> <div> <%--在属性中添加更新,取消和编辑事件,以及设置主键--%> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowEditing ="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating1" DataKeyNames="AdminID"> <Columns> <%-- <%--ID使用的是模板绑定,为的是不修改ID--%> <asp:TemplateField HeaderText="ID" HeaderStyle-CssClass="th_category" > <ItemTemplate> [ <%# Eval("AdminID") %>] </ItemTemplate> <HeaderStyle CssClass="th_category"></HeaderStyle> </asp:TemplateField> <%-- 姓名使用简单绑定--%> <asp:BoundField DataField="AdminName" HeaderText="姓名" /> <%-- 编辑,更新,取消事件--%> <asp:CommandField ShowEditButton="True" /> </columns> </asp:GridView> </div> </form> </body> </html>
后台代码
<pre name="code" class="csharp">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; using System.Web.Security; namespace aspnetDemo { public partial class GridViewDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { gridviewADO gd = new gridviewADO(); DataTable dt = new DataTable(); dt = gd.selectall(); GridView1.DataSource = dt; Session["TaskTable"] = dt;//将所查内容保存到Session中,实际操作无此项 GridView1.DataBind(); } } //编辑 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex;//获取所编辑的行的索引 gridviewADO gd = new gridviewADO(); DataTable dt = new DataTable(); dt = gd.selectall(); GridView1.DataSource = dt; GridView1.DataBind(); } //更新 protected void GridView1_RowUpdating1(object sender, GridViewUpdateEventArgs e) { DataTable dt = new DataTable(); String ID = GridView1.DataKeys[e.RowIndex].Value.ToString();//获取编辑列的第一个数据 String Name= ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();//获取编辑列的第二个数据 GridView1.EditIndex = -1;//取消编辑 GridView1.DataSource = Session["TaskTable"];//重新获取数据 GridView1.DataBind();//重新绑定数据 } //取消编辑 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1;//取消编辑 GridView1.DataSource = Session["TaskTable"];//重新获取数据 GridView1.DataBind();//重新绑定数据 } } }
一些错误及处理方法
解决方法:产生这样的错误是因为,我并没有在GridView的属性中为“取消”添加事件。同样的,对于编辑和更新事件我们都是要添加的。
此行代码的作用是获得编辑行的主键的值,因为在编辑的过程中AdminID这个信息是不允许被编辑的。在属性中添加了DataKeyNames这个属性,是为了方便我们获取主键。如果显示中并没有显示主键使用这个方法就可以获取到主键。
PS:不允许修改的信息是使用模板方法绑定的,而允许修改的信息是使用简单绑定的。因为单击编辑时,只能对简单绑定的数据起作用。
一些说明:
1.在后台代码的更新事件中,已经可以明确的获取修改行的主键值和修改后的数据,但是在示例代码中并没有添加向数据库中更新信息的操作。
2.在取消编辑(更新中也需要取消编辑)时需要重新从数据库中获取数据并重新绑定。示例的代码是从session会话中得到的数据,所以更新修改后并没有显示修改后的数据。
总结
在实现这个功能的过程中有遇到了好多的错误,在解决这些错误的过错中,不断的调试代码让我对这个功能的实现的印象更加深刻了,同时当一个困扰你一天的错误被你解决了,我想这其中的心情大家都懂的。
相关文章推荐
- ASP.NET MVC 音乐商店完整项目示例
- ASP.NET网站管理工具的初始配置
- raspbx
- Asp.Mvc 2.0实现用户登录与注销功能实例讲解(2)
- ASP.NET防止Sql注入的解决方法
- raspberrypi 树莓派+Python开机启动
- ASP.NET 成功执行Update 的 ExecuteNonQuery() 返回值大于0,但是查看数据库却没有改变
- ASP.NET-MVC4--Layout母版页面传入数据Model模型
- ASP.NET中EVAL用法大全
- asp.net中关于《%=》《%#》《%》 的用法——(转帖)
- asp.net web.config system.web
- DevExpress v15.1:ASP.NET WebForms功能增强(三)
- asp Win7 IIS7.5配置 ASP
- Asp.Mvc 2.0实现用户登录与注销功能实例讲解
- Asp.Mvc 2.0用户客户端验证实例讲解
- asp.net页面过滤所有换行符和多余空格
- AspNetPager在有些网页的地方显示的是换行的
- 使用MetaSploit在WinXP对Win2000进行攻击
- asp.net 中 linkbutton 点击下载文件
- ASP.NET_MVC使用Spring.Net.MVC依赖注入学习笔记