ASP.NET编辑与更新数据(非GridView控件实现)
2014-08-01 17:13
423 查看
Insus.NET在实现《ASP.NET开发,从二层至三层,至面向对象 (5)》/article/4668763.html 中,没有把数据编辑与更新功能一起演示,留下给网友们自由发挥,但是还是有网友想看看Insus.NET用实现方法。
以前Insus.NET的做法,是在GridView控件中进行。如这篇视频教程《GridView Edit Update Cancel Delete》/article/4669937.html
或者这篇《网站是否有播放音乐功能》/article/4669427.html 均可以看到GridView控件的更新功能。
总结以往的经验,觉得编辑或更新GridView控件的记录,用户需要点击多次按钮,才能完成。而且对GridView控件编写的代码也多。因此Insus.NET想直接点击GridView控件某笔记录,然后显示于添加的域中进行更新。
OK,开始来看看:
首先在GridView控件添加一列:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/99efb3f23b92a982af54715f5999bbe8.png)
然后在添加按钮后,再添加两个铵钮,一个是更新,一个是取消:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/5f8e910131f403ea1819ebfdaf9bb292.png)
这两个铵钮,一开始它的状态是禁用的,可看它们的Enabled=“false”。也就是说网页加载时,这两个铵钮是不可用。
接下来,我们分别实现OnRowCreated="GridViewEmployee_RowCreated",OnClick="ButtonUpdate_Click"和OnClick="ButtonCancel_Click"事件。先实现第一个,点击GridView控件某一笔记录时,希望能获取这笔记录数据。因此需要创建一个新的存储过程,By主键来获取点击当前记录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/9ecb017f0973c9d69d53de3564e5f1db.png)
有添加了数据库层的存储过程,前一篇写好的Employee.cs也需要添加相应的逻辑方法或是函数。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/5a942306e6796cae07c802528a773d98.png)
现在可以写了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/f9ab20c95fe3c02b53b133d99bf62b51.png)
上面有一个事件委托ButtonEdit_Click:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/a612cf6e8f21c3b0d8f883532311d6f3.png)
上面程序有几点说明,先是点击编辑之后,获取被点选的的记录主键,然后以主键是获取整笔记录,然后绑定给添加域中去(标记1)。标记2,需要把添加铵钮与绑定主键的文本框禁用。
标记3是Active更新和取消铵钮。
下面是取消铵钮ButtonCancel_Click事件,实际就是初始化控件状态功能:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/b00ae37eadd871ec363a67976475b7fa.png)
文本框清空,该禁用的铵钮禁用,该启用的铵钮启用。最后是更新铵钮ButtonUpdate_Click事件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/c5680e2cc7446c4f3f4930630b81754d.png)
看到否,取消铵钮与更新事件结束之后,所执行的代码是一样的。因此可以把它们写成一个单独的小方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/d409c524bf3d881f79f9e91c8ab063cf.png)
实现完了,看看实时操作演示效果,点击“Edit”铵钮时,它出现了一个异常:
Line: 885
Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/44ca86e298bea76e0b0852fb46878c4a.png)
F9设定中断点,F5debug,然后按F11进行跟踪,跑到下面出现异常了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/13eb34f002094dc89996f13468aa5e35.png)
细心检查,原来真正的问题,出现在BizBaseSQLSp.cs类库中,函数public DataSet ExecuteDataSet(),下面是修改正确方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/55970d50f18fcba5092eefaceb2b3ae7.png)
保存,再次运行:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/d026b51caee4196a385682e36dbfb83c.gif)
没有难度,这样的话,设计网页时,可以把添加域与编辑同用,不必浪费在写GridView控件内,还要定义编辑模版。
Insus.NET虽写的不是什么绝世之作,平凡之中能让您从中获取对ASP.NET技术的有所提升与积累,足已。
以前Insus.NET的做法,是在GridView控件中进行。如这篇视频教程《GridView Edit Update Cancel Delete》/article/4669937.html
或者这篇《网站是否有播放音乐功能》/article/4669427.html 均可以看到GridView控件的更新功能。
总结以往的经验,觉得编辑或更新GridView控件的记录,用户需要点击多次按钮,才能完成。而且对GridView控件编写的代码也多。因此Insus.NET想直接点击GridView控件某笔记录,然后显示于添加的域中进行更新。
OK,开始来看看:
首先在GridView控件添加一列:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/99efb3f23b92a982af54715f5999bbe8.png)
然后在添加按钮后,再添加两个铵钮,一个是更新,一个是取消:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/5f8e910131f403ea1819ebfdaf9bb292.png)
这两个铵钮,一开始它的状态是禁用的,可看它们的Enabled=“false”。也就是说网页加载时,这两个铵钮是不可用。
接下来,我们分别实现OnRowCreated="GridViewEmployee_RowCreated",OnClick="ButtonUpdate_Click"和OnClick="ButtonCancel_Click"事件。先实现第一个,点击GridView控件某一笔记录时,希望能获取这笔记录数据。因此需要创建一个新的存储过程,By主键来获取点击当前记录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/9ecb017f0973c9d69d53de3564e5f1db.png)
有添加了数据库层的存储过程,前一篇写好的Employee.cs也需要添加相应的逻辑方法或是函数。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/5a942306e6796cae07c802528a773d98.png)
现在可以写了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/f9ab20c95fe3c02b53b133d99bf62b51.png)
上面有一个事件委托ButtonEdit_Click:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/a612cf6e8f21c3b0d8f883532311d6f3.png)
上面程序有几点说明,先是点击编辑之后,获取被点选的的记录主键,然后以主键是获取整笔记录,然后绑定给添加域中去(标记1)。标记2,需要把添加铵钮与绑定主键的文本框禁用。
标记3是Active更新和取消铵钮。
下面是取消铵钮ButtonCancel_Click事件,实际就是初始化控件状态功能:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/b00ae37eadd871ec363a67976475b7fa.png)
文本框清空,该禁用的铵钮禁用,该启用的铵钮启用。最后是更新铵钮ButtonUpdate_Click事件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/c5680e2cc7446c4f3f4930630b81754d.png)
看到否,取消铵钮与更新事件结束之后,所执行的代码是一样的。因此可以把它们写成一个单独的小方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/d409c524bf3d881f79f9e91c8ab063cf.png)
实现完了,看看实时操作演示效果,点击“Edit”铵钮时,它出现了一个异常:
Line: 885
Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/44ca86e298bea76e0b0852fb46878c4a.png)
F9设定中断点,F5debug,然后按F11进行跟踪,跑到下面出现异常了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/13eb34f002094dc89996f13468aa5e35.png)
细心检查,原来真正的问题,出现在BizBaseSQLSp.cs类库中,函数public DataSet ExecuteDataSet(),下面是修改正确方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/55970d50f18fcba5092eefaceb2b3ae7.png)
保存,再次运行:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/07/d026b51caee4196a385682e36dbfb83c.gif)
没有难度,这样的话,设计网页时,可以把添加域与编辑同用,不必浪费在写GridView控件内,还要定义编辑模版。
Insus.NET虽写的不是什么绝世之作,平凡之中能让您从中获取对ASP.NET技术的有所提升与积累,足已。
相关文章推荐
- ASP.NET中GridView动态绑定数据实现编辑更新
- ASP.NET + EXTJS 实现类似GridView行内编辑、Pannel、分页、增删改查、数据验证,格式转换
- ASP.NET中的DataList控件编码实现数据绑定、删除、更新等操作
- Asp.net的GridView控件实现单元格可编辑方便用户使用
- Asp.net的GridView控件实现单元格可编辑方便用户使用
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子
- Asp.net中DetailsView中添加日历控件 及DropDownList 并实现数据同步更新
- ASP.NET中运用DataList控件来实现编辑、更新、删除、取消等功能
- 新写的一个使用ASP.NET AJAX中的UpdatePanel控件实现GridView的无刷新删除,更新,添加,查询!
- ASP.NET 2.0中的数据操作:给新增、编辑界面增加验证控件 (翻译)
- Scott Mitchell 的ASP.NET 2.0数据教程之十九:给新增、编辑界面增加验证控件 (翻译)
- Scott Mitchell 的ASP.NET 2.0数据操作教程之十:使用 GridView 和DetailView实现的主/从报表
- 用DataList控件和ObjectDataSource在ASP.NET 2.0中实现高效能数据分页
- Scott Mitchell 的ASP.NET 2.0数据教程之十二:在GridView控件中使用TemplateField
- ASP.NET 2.0中用Gridview控件操作数据
- ASP.NET 2.0 – 善用GridView控件的HyperLinkField数据行 (转自章立民CnBlogs)
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- asp.net 2.0下一个标准GRIDVIEW功能的实现(不用datasource控件)
- 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法