• 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中操作数据之四十五:DataList和Repeater里的自定义Button

在ASP.NET 2.0中操作数据之四十五:DataList和Repeater里的自定义Button

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

heker2007通过本文主要向大家介绍了在ASP.NET 2.0中操作数据之四十五:DataList和Repeater里的自定义Button等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言

  在前面关于DataList 和Repeater 的7章教程里,我们分别创建了只读和可以编辑删除的例子。为了让DataList有编辑和删除的功能,我们在ItemTemplate里添加了一些button,当点击时,引起postback,并根据button的CommandName属性激发相关的事件。例如,添加一个CommandName为“Edit”的button,在postback时会激发EditCommand事件,如果CommandName为“Delete”则激发DeleteCommand。

  除了编辑和删除button,DataList和Repeater还可以包含一些当点击时,执行自定义服务器端逻辑的Button,LinkButton和ImageButton。本章我们将创建一个在Repeater里列出categories的界面。每个category都包含一个button,当点击时会列出相关product。见图1。

http://files.weikejianghu.com/file_images/article/201605/2016051414585637.png
图 1: 点 “Show Products” 显示目录下所有product

第一步: 添加教程页

首先添加本章需要的页。添加一个名为CustomButtonsDataListRepeater的文件夹。然后添加下面两个页,记得包含Site.master母板页。

    Default.aspx
    CustomButtons.aspx

http://files.weikejianghu.com/file_images/article/201605/2016051414585738.png
图 2: 添加页

和其它文件夹一样,CustomButtonsDataListRepeater文件夹下的Default.aspx页会列出本部分的教程。和前面一样添加SectionLevelTutorialListing.ascx用户控件。

http://files.weikejianghu.com/file_images/article/201605/2016051414585739.png
图 3: 添加 SectionLevelTutorialListing.ascx用户控件

最后,在Web.sitemap里添加这些页的信息。见下面的标记:

<siteMapNode
 url="~/CustomButtonsDataListRepeater/Default.aspx"
 title="Adding Custom Buttons to the DataList and Repeater"
 description="Samples of DataList and Repeater Reports that Include
     Buttons for Performing Server-Side Actions">
 <siteMapNode
  url="~/CustomButtonsDataListRepeater/CustomButtons.aspx"
  title="Using Custom Buttons in the DataList and Repeater's Templates"
  description="Examines how to add custom Buttons, LinkButtons,
      or ImageButtons within templates." />
</siteMapNode>
</div>

完成后浏览该页。见图4。

http://files.weikejianghu.com/file_images/article/201605/2016051414585740.png
图 4: 现在的站点地图包含了本章的页

第二步: 添加 Categories列表

  我们需要添加一个列出所有categories,每个category都有一个“Show Products” LinkButton的Repeater。点LinkButton时会显示所有category相关的products。我们首先创建一个列出所有categories的Repeater。打开CustomButtons.aspx页,拖一个Repeater进来,将ID设为Categories。然后从智能标签里创建一个名为CategoriesDataSource的ObjectDataSource,用CategoriesBLL类的GetCategories()方法配置它。

http://files.weikejianghu.com/file_images/article/201605/2016051414585741.png
图5: 配置ObjectDataSource

  Visual Studio会根据数据源为DataList创建一个默认的ItemTemplate,而Repeater的templates需要手工定义。而且Repeater的templates需要直接通过声明代码来创建和修改(也就是说在智能标签上没有“Edit Templates”选项)

  点左下角的源视图,添加一个以<h3>显示category name,以段落description的ItemTemplate。并包含一个在每个category之间显示水平线(<hr />)的SeparatorTemplate。同样还要添加一个LinkButton,将Text设为“Show Products”。完成这些后你的页面声明代码应该和下面差不多:

<asp:Repeater ID="Categories" DataSourceID="CategoriesDataSource"
 runat="server">
 <ItemTemplate>
  <h3><%# Eval("CategoryName") %></h3>
  <p>
   <%# Eval("Description") %>
   [<asp:LinkButton runat="server" ID="ShowProducts">
    Show Products</asp:LinkButton>]
  </p>
 </ItemTemplate>
 <SeparatorTemplate><hr /></SeparatorTemplate>
</asp:Repeater>
<asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
 OldValuesParameterFormatString="original_{0}"
 SelectMethod="GetCategories" TypeName="CategoriesBLL">
</asp:ObjectDataSource>
</div>

  图6是浏览该页的样子。每个category name和description都被列出来。当点“Show Products” button时会引起postback,但是还不执行任何功能。

http://files.weikejianghu.com/file_images/article/201605/2016051414590142.png
图 6: 每个 Category'的Name 和 Description 和 “Show Products” LinkButton一起列出

第三步:当点“Show Products” LinkButton 时执行服务器端代码

  任何时候,当DataList或Repeater的template里的Button, LinkButton, ImageButton被点时,会产生postback,并激发DataList或Repeater的ItemCommand事件。除了ItemCommand外,如果button'的CommandName 设为(“Delete”, “Edit”, “Cancel”, “Update”,  “Select”)其中一个时,DataList会激发另外一个事件。但是ItemCommand是都会激发的。

  当DataList或Repeater的template里的Button被点时,通常我们需要获取哪个button被点了(一个控件里可能有多个button,比如编辑和删除),还可能需要一些其它的信息(比如那些button被点的item(项)的主键)。Button, LinkButton, ImageButton提供了两个属性,它们的值可以传给ItemCommand event handler:

    CommandName –表示template里每个button身份的字符串 。
    CommandArgument – 通常用来保存一些值,比如主键。

  在这个例子里,将LinkButton的CommandName设为“ShowProducts”,并将当前记录的主键– CategoryID –通过绑定语法绑定到CommandArgument(CategoryArgument='<%# Eval("CategoryID") %>')。完成这些后,LinkButton的声明语法看起来应该和下面差不多:

<asp:LinkButton runat="server" CommandName="ShowProducts"
 CommandArgument='<%# Eval("CategoryID") %>' ID="ShowProducts">
 Show Products</asp:LinkButton>
</div>

  当button被点时,产生postback并激发DataList或Repeater的ItemCommand事件。Button的CommandName和CommandArgument值被传到event handler里。

  为ItemCommand事件创建一个event handler,注意event handler的第二个参数(名字为e)。这个参数的类型为RepeaterCommandEventArgs,它有以下4个属性:

    CommandArgument – 被点的 button'的CommandArgument property 的值
    CommandName –  button'的CommandName property 的值
    CommandSource – 被点 button 的引用
    Item – 包含被点button 的 RepeaterItem的引用; 每条绑定到Repeater的记录被表明为一个 RepeaterItem

  由于选择的category的CategoryID通过CommandArgument传入,我们可以在ItemCommand event handler里获取与之相关的products。这些products在ItemTemplate(我们已经添加过了)里绑定到一个BulletedList。剩下的事就是添加BulletedList,在ItemCommand event handler里引用它,然后将选择的category的products绑定到BulletedList,我们将在第四步完成这个。

  注意:DataList的ItemCommand event handler传入了一个DataListCommandEventArgs类型的对象,它提供和RepeaterCommandEventArgs 一样的4个属性。

第四步: 显示选择的Category的 Products

  在ItemTemplate里显示products可以使用很多控件,我们可以添加一个嵌套的Repeater,DataList,DropDownList,GridView等。在这里我们使用BulletedList。回到CustomButtons.aspx page页的声明代码,在“Show Products” LinkButton后添加一个BulletedList。将ID设为ProductsInCategory。Bu

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

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

相关文章

  • 2018-08-20Visual Studio卸载不完全问题的解决方法
  • 2017-05-11用javascript为DropDownList控件下拉式选择添加一个Item至定义索引位置
  • 2017-05-11.NET中文乱码的解决方法分享
  • 2017-05-11asp.net如何将DataSet转换成josn并输出
  • 2018-08-20.net中捕捉全局未处理异常的三种方式示例
  • 2017-05-11ASP.NET 绑定DataSet中的多个表
  • 2017-05-11几种判断asp.net中session过期方法的比较
  • 2017-05-11asp.net为网页动态添加关键词的方法
  • 2017-05-11asp.net安全、实用、简单的大容量存储过程分页第1/2页
  • 2017-05-11浅析DataBinder.Eval和Eval的区别

文章分类

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

最近更新的内容

    • .Net中生成二维的表格的代码 分享
    • ASP.NET中的参数与特殊类型和特性
    • ASP.NET实现单点登陆(SSO)适用于多种情况
    • ASP.Net不执行问题一解
    • .net读取Rss转换为DataTable
    • ASP.NET―001:GridView绑定List、页面返回值具体实现
    • throw的一些用法
    • asp.net运算符之逻辑运算符以及其他运算符介绍与实例
    • .NET Visual Studio 代码性能分析工具
    • viewstate和datatable动态录入数据示例

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

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