• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之五十五:编辑和删除现有的二进制数据

在ASP.NET 2.0中操作数据之五十五:编辑和删除现有的二进制数据

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了文本编辑器 asp.net,百度编辑器 asp.net,asp.net,asp net培训,asp和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言:

  在前面的3章里我们为处理二进制数据添加了很多的功能。我们首先在表Categories里添加BrochurePath列,并更新了体系结构。同样,为了处理表Categorie里现有的Picture列,我们在数据访问层和业务逻辑层里增加了相应的方法。同时我们创建一个页面,在GridView控件里显示二进制数据——包含一个指向说明小册子的下载链接,并将每个类的图片显示在<img>元素里。同时我们添加一个DetailsView控件,供用户添加新的类,并上传其图片和小册子数据。

  剩下的就是添加编辑和删除功能,本章我们将通过GridView控件内建的编辑和删除功能来实现。当编辑一个类时,我们允许用户用任意指定的图片将原来的换掉;也可以用新的小册子将现有的替换掉,甚至不再包含小册子文件。让我们开始吧!

第1步:更新数据访问层

  虽然数据访问层包含自动生成的Insert, Update和Delete方法,但它们都基于CategoriesTableAdapter的主查询,因此并不包含Picture列。自然,Insert和Update方法也不包含picture列的相应参数。就像56章做的那样,我们需要为更新Categories表而创建新的TableAdapter方法。

  右键点击CategoriesTableAdapter的顶部,选择“添加查询”,打开TableAdapter查询设置向导,我们首先选择“使用SQL语句”,点Next,再选“UPDATE”,再点Next.

http://files.weikejianghu.com/file_images/article/201605/2016051710105725.gif
图1:选择“UPDATE”选项

我们现在需要指定UPDATE SQL语句。向导自动创建一个基于TableAdapter主查询的UPDATE语句(它更新CategoryName, Description和BrochurePath值)。更新该语句以包含Picture列,以及@Picture参数,像如下这样:

UPDATE [Categories] SET
 [CategoryName] = @CategoryName,
 [Description] = @Description,
 [BrochurePath] = @BrochurePath ,
 [Picture] = @Picture
WHERE (([CategoryID] = @Original_CategoryID))
</div>

最后,向导要求我们为新的TableAdapter方法命名,我们取为UpdateWithPicture,再点Finish。

http://files.weikejianghu.com/file_images/article/201605/2016051710105726.gif
图2:为新方法命名为UpdateWithPicture

第2步:添加新的业务逻辑方法

除了更新DAL外,我们需要更新BLL以包含更新、删除类的方法。以下是表现层需要调用的方法:

为了删除一个类,我们使用CategoriesTableAdapter的自动生成的Delete方法,在类CategoriesBLL里添加如下的方法:

[System.ComponentModel.DataObjectMethodAttribute
 (System.ComponentModel.DataObjectMethodType.Delete, true)]
public bool DeleteCategory(int categoryID)
{
 int rowsAffected = Adapter.Delete(categoryID);

 // Return true if precisely one row was deleted, otherwise false
 return rowsAffected == 1;
}

  本教程,为了更新一个类,我们将创建2个方法。一个方法接受picture值,并调用我们刚刚添加到CategoriesTableAdapter里的UpdateWithPicture方法。另一个方法只接受CategoryName, Description和BrochurePath值, 并调用CategoriesTableAdapter类里自动生成的Update语句。为什么要使用2种方法呢?某些情况下,用户更新类时同时更新其图片,这时就需要上传一张新图片。上传图片的数据将在UPDATE语句里用到;另一种情况,用户只想更新类的name和description信息,因此我们需要使用2种更新方法。业务逻辑层会根据是否传入picture值来判断使用哪种方法。

</div>

  为达该目的,我们要在CategoriesBLL类里添加2个方法,名字都是UpdateCategory,第一个方法接受的参数包括3个string,1个byte数组和1个int;第二个方法接受的参数包括3个string和1个int。3个字符串参数代表类的name, description和brochure文件路径,byte数组包含的是类的picture数据,int代表类记录的CategoryID,我们注意到,当传入的byte数组为null时,第一个方法将调用第二个方法。

[System.ComponentModel.DataObjectMethodAttribute
 (System.ComponentModel.DataObjectMethodType.Update, false)]
public bool UpdateCategory(string categoryName, string description,
 string brochurePath, byte[] picture, int categoryID)
{
 // If no picture is specified, use other overload
 if (picture == null)
 return UpdateCategory(categoryName, description, brochurePath, categoryID);

 // Update picture, as well
 int rowsAffected = Adapter.UpdateWithPicture
 (categoryName, description, brochurePath, picture, categoryID);

 // Return true if precisely one row was updated, otherwise false
 return rowsAffected == 1;
}

[System.ComponentModel.DataObjectMethodAttribute
 (System.ComponentModel.DataObjectMethodType.Update, true)]
public bool UpdateCategory(string categoryName, string description,
 string brochurePath, int categoryID)
{
 int rowsAffected = Adapter.Update
 (categoryName, description, brochurePath, categoryID);

 // Return true if precisely one row was updated, otherwise false
 return rowsAffected == 1;
}

</div>

第3步:拷贝功能

  在上一章里,我们创建了一个UploadInDetailsView.aspx页面,在一个GridView控件列出所有的类,再通过一个DetailsView控件来添加新的类。在本教程,我们将扩展GridView控件以支持编辑和删除功能。不过我们不再使用UploadInDetailsView.aspx页面,让我们在~/BinaryData文件夹里创建一个新页面,UpdatingAndDeleting.aspx,将UploadInDetailsView.aspx页面的声明代码复制并粘贴到页面UpdatingAndDeleting.aspx.

  打开UploadInDetailsView.aspx页面,将其<asp:Content>元素里的声明代码复制下来,就像图3那样。接下来,打开UpdatingAndDeleting.aspx页面,把代码粘贴在<asp:Content>元素里。同样的,将UploadInDetailsView.aspx页面的后台代码拷贝到UpdatingAndDeleting.aspx。

http://files.weikejianghu.com/file_images/article/201605/2016051710105727.gif
图3:将UploadInDetailsView.aspx页面的声明代码拷贝下来

完成后,登录UpdatingAndDeleting.aspx页面,你将会看到相同的输出效果。感觉用起来和UploadInDetailsView.aspx页面一样。

第4步:添加ObjectDataSource和GridView的删除功能

  就像在教程16《概述插入、更新和删除数据》里探讨的一样,只要GridView控件绑定的数据源支持“删除”功能,我们就可以为GridView控件启用删除功能。不过,GridView控件绑定的ObjectDataSource(也就是CategoriesDataSource)目前并不支持删除。

  为支持删除,在ObjectDataSource的智能标签里点“配置数据源”,一直点到“定义数据方法”界面。虽然当前只指定了ObjectDataSource控件InsertMethod属性和SelectMethod属性,但向导自动地分别为UPDATE标签和DELETE标签指定UpdateCategory方法和DeleteCategory方法。为什么呢?因为我们在CategoriesBLL类里为上述2种方法使用了DataObjectMethodAttribute属性,作用是分别使其成为默认的“更新”和“删除”方法。

  不过现在我们在UPDATE标签的下拉列表里选“(None)”, 而 DELETE标签里仍然为DeleteCategory方法。我们将在第6步添加更新功能。

http://files.weikejianghu.com/file_images/article/201605/2016051710105828.gif
图4:设置ObjectDataSource控件使用DeleteCategory方法

  注意:完成设置后,Visual Studio会问你是否“刷新列和主键”,选择No,因为选择Yes将会把我们自己定制的任何列覆盖掉。

  现在,ObjectDataSource控件将包含DeleteMethod属性和对应的DeleteParameter参数。我们记得在以前的教程提到过,当使用向导指定方法时,Visual Studio会自动的将ObjectDataSource控件的OldValuesParameterFormatString属性设置为original_{0},这将导致更新和删除时出现问题。为此,要么将清除该属性,要么将其设置为默认的{0}值。对该属性的更详细讨论见教程16《概述插入、更新和删除数据》

完成后,ObjectDataSource控件的声明代码看起来应该像下面的一样:

<asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
 OldValuesParameterFormatString="{0}" Se



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP .NET 可编辑输入自动匹配的下拉框
  • ASP.NET百度Ueditor编辑器实现上传图片添加水印效果
  • asp.net读取模版并写入文本文件
  • ASP.NET文本框密码赋默认值的方法
  • asp.net使用FCK编辑器中的分页符实现长文章分页功能
  • ASP.NET配置KindEditor文本编辑器图文教程
  • Asp.net中使用文本框的值动态生成控件的方法
  • 在ASP.NET 2.0中操作数据之五十五:编辑和删除现有的二进制数据
  • ASP.NET中 TextBox 文本输入框控件的使用方法
  • ASP.NET输入文本框自动提示功能

相关文章

  • 2017-05-11ASP.net 页面被关闭后,服务器端是否仍然执行中?
  • 2017-05-11ASP.NET 2.0中的数据操作之九:跨页面的主/从报表
  • 2017-05-11asp.net String.IsNullOrEmpty 方法
  • 2017-05-11ASP.NE网站发布注意事项简析
  • 2017-05-11ASP.NET网站聊天室的设计与实现(第3节)
  • 2017-05-11C#中使用SendMessage
  • 2017-05-11asp.net(C#)把汉字转化成全拼音函数(全拼)
  • 2017-05-11asp.net 枚举文件里面的数字绑定到DropDownList里面去
  • 2017-05-11灵活使用asp.net中的gridview控件
  • 2017-05-11ASP.NET加密解密算法分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入本机影像生成器(Ngen.exe)工具使用方法详解
    • Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)
    • ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
    • 使用.NET中的Action及Func泛型委托深入剖析
    • ASP.NET生成图形验证码的方法详解
    • ASP.NET 2.0中预设的cookie
    • asp.net String.IsNullOrEmpty 方法
    • gridview+objectdatasource+aspnetpager整合实例
    • .net后台页面统一验证是否登录
    • 增加asp.net应用程序性能的20种方法(简单有效)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有