Insus.NET在实现《ASP.NET开发,从二层至三层,至面向对象 (5)http://www.cnblogs.com/insus/p/3880606.html 中,没有把数据编辑与更新功能一起演示,留下给网友们自由发挥,但是还是有网友想看看Insus.NET用实现方法。

以前Insus.NET的做法,是在GridView控件中进行。如这篇视频教程《GridView Edit Update Cancel Deletehttp://www.cnblogs.com/insus/archive/2011/01/25/1944295.html

或者这篇《网站是否有播放音乐功能http://www.cnblogs.com/insus/archive/2013/05/09/3066347.html  均可以看到GridView控件的更新功能。

总结以往的经验,觉得编辑或更新GridView控件的记录,用户需要点击多次按钮,才能完成。而且对GridView控件编写的代码也多。因此Insus.NET想直接点击GridView控件某笔记录,然后显示于添加的域中进行更新。

OK,开始来看看:
首先在GridView控件添加一列:

然后在添加按钮后,再添加两个铵钮,一个是更新,一个是取消:
 

这两个铵钮,一开始它的状态是禁用的,可看它们的Enabled=“false”。也就是说网页加载时,这两个铵钮是不可用。
接下来,我们分别实现OnRowCreated="GridViewEmployee_RowCreated",OnClick="ButtonUpdate_Click"和OnClick="ButtonCancel_Click"事件。先实现第一个,点击GridView控件某一笔记录时,希望能获取这笔记录数据。因此需要创建一个新的存储过程,By主键来获取点击当前记录:

有添加了数据库层的存储过程,前一篇写好的Employee.cs也需要添加相应的逻辑方法或是函数。

现在可以写了:

上面有一个事件委托ButtonEdit_Click:

上面程序有几点说明,先是点击编辑之后,获取被点选的的记录主键,然后以主键是获取整笔记录,然后绑定给添加域中去(标记1)。标记2,需要把添加铵钮与绑定主键的文本框禁用。
标记3是Active更新和取消铵钮。

下面是取消铵钮ButtonCancel_Click事件,实际就是初始化控件状态功能:

文本框清空,该禁用的铵钮禁用,该启用的铵钮启用。最后是更新铵钮ButtonUpdate_Click事件:

看到否,取消铵钮与更新事件结束之后,所执行的代码是一样的。因此可以把它们写成一个单独的小方法:

实现完了,看看实时操作演示效果,点击“Edit”铵钮时,它出现了一个异常:
Line: 885
Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.

F9设定中断点,F5debug,然后按F11进行跟踪,跑到下面出现异常了:

细心检查,原来真正的问题,出现在BizBaseSQLSp.cs类库中,函数public DataSet ExecuteDataSet(),下面是修改正确方法:

保存,再次运行:

没有难度,这样的话,设计网页时,可以把添加域与编辑同用,不必浪费在写GridView控件内,还要定义编辑模版。

Insus.NET虽写的不是什么绝世之作,平凡之中能让您从中获取对ASP.NET技术的有所提升与积累,足已。

ASP.NET编辑与更新数据(非GridView控件实现)的更多相关文章

  1. 027. asp.net中数据绑定控件之 GridView控件

    GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...

  2. GridView控件点击单元格如何获取该列的列标题

    本博文Insus.NET教你实现在GridView控件中,用mouse点击某单元格之后,希望能获取到该列的列标题. 创建一个网页,创建一个GridView控件: 去cs绑定数据给GridView控件: ...

  3. ASP.NET中GridView控件删除数据的两种方法

      今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题.接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别. 方式一:通 ...

  4. asp.net GridView控件的列属性

    BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状 ...

  5. Mouse点击之后,复制GridView控件的数据行

    本篇是实现用mouse点击GridView控件任意一行,把所点击的数据复制至另一个GridView控件上. 实现大概思路,把所点击的数据行的记录主键找出来,再去过滤数据源. 点击功能,已经实现,可以参 ...

  6. 点击CheckBox让Gridview控件在编辑与正常状态之间切换

    昨晚快休息时,还有一位网友咨询Insus.NET,他想在开发时,实现一个小功能,就是想让用户在点击Gridview控件第一列的CheckBox之后,GridView进入编辑状态,取消选中的CheckB ...

  7. 在aspx页动态加载ascx页面内容,给GridView控件绑定数据

    在aspx页动态加载ascx页面内容 //加载ascx页面内容Control c1 = this.Page.LoadControl("WebUserControl1.ascx"); ...

  8. 动态绑数据(GridView控件Header和ItemTemplate)

    想了解此篇文章,建议先预习一下<动态变更GridView控件列名>http://www.cnblogs.com/insus/p/3232057.html,因为多少有些关联.不管怎样,它能够 ...

  9. GridView控件

    GridView是ASP.NET 1.x的DataGrid控件的后继者.它提供了同样的基本功能集,同一时候添加�了大量扩展和改进.如前所述,DataGrid(ASP.NET 2.0仍然全然支持)是一个 ...

随机推荐

  1. 11i - 12 Gather Schema Statistics fails with Ora-20001 errors after 11G database Upgrade (文档 ID 781813.1)

    11i - 12 Gather Schema Statistics fails with Ora-20001 errors after 11G database Upgrade (文档 ID 7818 ...

  2. 利用阿里大于接口发短信(Delphi版)

    阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...

  3. 浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序

    本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析 ...

  4. 前端基础-html 列表标签,表格标签,表单标签

    一.列表标签 1.ul(无序列表)标签 ul(unordered list)无序列表,ul下的子元素只能是li(list item),如下示例: <ul> <li>第一项< ...

  5. Django(命名URL和URL反向解析)

    day67 参考: https://www.cnblogs.com/liwenzhou/articles/8271147.html#autoid-1-4-0 反向解析URL             本 ...

  6. ES6中的元编程-Proxy & Reflect

    前言 ES6已经出来好久了,但是工作中比较常用的只有let const声明,通过箭头函数改this指向,使用promise + async 解决异步编程,还有些数据类型方法...所以单独写一篇文章学习 ...

  7. D3.js (v3)+react框架 基础部分之认识选择集和如何绘制一个矢量图

    首先需要下载安装d3.js  :  yarn add d3 然后在组建中引入 :  import * as d3 from 'd3' 然后定义一个方法,在componentDidMount()这个钩子 ...

  8. flask~数据库

    flask与数据库的连接基于flaks_sqlaichemy 扩展 首先要连接数据库的时候必须得先下载 pip install flask-sqlalchemy 这个扩展 flask框架与数据库的连接 ...

  9. postgresql-查看各个数据库大小

    查看各个数据库表大小(不包含索引),以及表数据量 mysql: select table_name,concat(round((DATA_LENGTH/1024/1024),2),'M')as siz ...

  10. [LeetCode]最长回文子串 java

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...