原文:asp.net学习之 数据绑定控件--List数据绑定控件

List控件(如 CheckBoxListDropDownListListBoxRadioButtonList 类)继承自ListControl类,不能直接创建 ListControl 抽象类的实例。相反,此类由其他类(如 CheckBoxListDropDownListListBoxRadioButtonList 类)继承以提供通用的基本功能。
    ListControl 类的属性允许您指定用来填充列表控件的数据源。使用 DataSource 属性指定要绑定到列表控件的数据源。如果数据源包含多个表,请使用 DataMember 属性指定要使用的表。通过分别设置 DataTextFieldDataValueField 属性,可以将数据源中的不同字段绑定到列表控件项的 ListItem.TextListItem.Value 属性。通过设置 DataTextFormatString 属性,可以设定列表控件中每一项的显示文本的格式。
    列表控件中显示的所有项都保存在 Items 集合中。可以使用 SelectedIndex 属性,以编程方式指定或确定列表控件中选定项的索引。使用 SelectedItem 属性,可以访问选定项的属性。
    ListControl 类提供了 SelectedIndexChanged 事件,在信息发往服务器之间,如果列表控件中的选定项发生变化,会引发该事件。这使您可以为此事件提供自定义处理程序。有关处理事件的更多信息,请参见使用事件。

继承自ListControl的列表控件包括了以下几个:
    BulletedList     -- 显示列表项,列表项可以为文本、链接按钮或者是超链接
    checkboxlist    -- 显示复选框列表
    dropdownlist   -- 显示下拉框列表
    Listbox           -- 显示列表框
    RadioButtonlist-- 显示单选按钮列表

1.共通属性和方法

以为以上几个控件都继承于ListControl,所以它们有一些共通的东西
    1.1 每个控件都有一个选项列表,每个选项都是由ListItem类的一个实例。
       其中ListItem类具有以下通用属性
         ● Attributes:可以在列表项中添加HTML属性
         ● Enable:可以将列表项置为可用
         ● Selected:可以将列表项标记为选中
         ● Text:显示的文本
         ●Value:对应的隐藏值
    1.2 都可以绑定要数据源,支持声明式绑定和编程式绑定,声明式比较简单,不多述。
       编程式绑定不光可以绑定ListItem对象集合外,还可以绑定DataTable中的Columns,可以绑定List<Type>对象。如:
例1:List控件绑定List<Type>对象

<script runat="server">     public class CartItem       {            private int _id;             public string _description;              public int Id {  get { return _id; } }             public string Description              {                   get { return _description; }             }              public CartItem(int id, string description)             {                  _id = id;                 _description = description;             }          }                    void Page_Load()         {              if (!IsPostBack)             {                  // Create shopping cart             List<CartItem> shoppingCart = new List<CartItem>();                 shoppingCart.Add(new CartItem(1, “Notebook Computer”));                 shoppingCart.Add(new CartItem(2, “HD Plasma Television”));                 shoppingCart.Add(new CartItem(3, “Lava Lamp”));                 lstShoppingCart.DataSource = shoppingCart;                 lstShoppingCart.DataBind();              }          }          </script>     <asp:ListBox id=”lstShoppingCart” DataTextField=”Description”                DataValueField=”Id” Runat=”server” />        

例2:List控件绑定数据源控件

<asp:DropDownList id=”ddlMovies” DataSourceID=”srcMovies” DataTextField=”Title”                 DataValueField=”Id” Runat=”server” />     <asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”                 ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server” />        

1.3 以相同的方式确定被选中的项
       通过SelectedIndex、SelectedItem、SelectedValue属性获取和设置被选中的项。
    1.4 追加数据项:AppendDataBOundItems属性
       默认的,当使用DataBind绑定到数据源时,List控件原有的数据会被清空,新的选项会被加入进来,而如果通过设定AppendDataBoundItems为true属性,就可以在绑定数据源时,保留已经存在的数据项。
    1.5 启用自动回传功能: AutoPostBack属性
       当设置ListControl的AutoPostBack属性为true时,对List控件中的列表项进行更改,都会导致List控件的表单自动回传到服务器。
    1.6 获得列表项(ListItem)的集合: Items属性
       所有List控件呈现的列表项都包含在ListControl控件的Items属性中。该属性返回的是一个ListItemCollection对象。
       可以直接访问这个集合中的列表项,增加或删除指定列表项或者改变列表项的顺序。
例3:访问和修改列表项

<script runat="server">     protected void btnAdd_Click(object sender, EventArgs e)         {              ListItem item = lstAllMovies.SelectedItem;             if (item != null)             {                  lstAllMovies.Items.Remove(item);                  lstFavoriteMovies.ClearSelection();   // 清除列表选择并将所有项的 Selected 属性设置为 false。             lstFavoriteMovies.Items.Add(item);             }          }          </script>           <asp:ListBox id=”lstAllMovies” DataSourceID=”srcMovies” DataTextField=”Title”                 DataValueField=”Id” Runat=”server” />     <asp:Button id=”btnAdd” Text=”—&gt;” ToolTip=”Add List Item”                 Runat=”server” OnClick=”btnAdd_Click” />     <asp:ListBox id=”lstFavoriteMovies” Runat=”server” />     <asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”                 ConnectionString=”<%$ ConnectionStrings:Movies %>” Runat=”server” />

2. DropdownList控件

默认的DropdownList控件不大好用,推荐使用第三方DropdownList控件,例如EasyListBox。见www.easylistbox.com

3. RadioButtonList控件

RadioButtonList控件有3个属性可以影响其布局,分别是:
     ● RepeatColumns: 按钮需要显示的列数
     ● RepeatDirection: 排列方向,可以赋为Horizontal(横向)及Vertical(纵向)
     ● RepeatLayout: 单选按钮是否显示在一个HTML表格中,可以赋值为Table或Flow. 默认为Table

4. ListBox控件

与DropdownList控件相似,不同的是,可以多选。另外注意的是ListBox的Rows属性,可以得知一次显示选择项的行数
       ● Rows: 获取或设置 ListBox 控件中显示的行数。默认为4
    可以使用 Items 集合检查 ListBox 控件中包含的 ListItem 对象。例如,可以通过枚举 Items 集合并测试每个 ListItem 元素的 Selected 值来确定 ListBox 控件中的选定项。
例4:获得ListBox中选择项

<script runat=”server”>protected void btnSubmit_Click(object sender, EventArgs e){    foreach (ListItem item in lstMovies.Items)        if (item.Selected)            lblMovie.Text += “<li>” + item.Text;}</script><asp:ListBox id=”lstMovies” DataSourceID=”srcMovies” DataTextField=”Title”        DataValueField=”Id” SelectionMode=”Multiple” Runat=”server” /><asp:Button id=”btnSubmit” Text=”Submit” OnClick=”btnSubmit_Click” Runat=”server” /><asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”        ConnectionString=”<%$ ConnectionStrings:Movies %>”  Runat=”server” />

5. CheckboxList控件

呈现一组复选框列表,可以多选,程序中获得选择项的方式同例4的代码相同。也是通过枚举来实现。
    其有3个属性可以影响其布局,分别是RepeatColumns、RepeatDirection、RepeatLayout,用法与RadioButtonList相同。

6. BulletedList控件

可以呈现无序(项目符号)的列表,也可以呈现有序(带编号)的列表,每个列表项可以为文本、LinkButton或者是一个到其它WEB页的链接。
    通过BulledStyle属性可以控制每一个列表项的外观。属性可以有以下值:Circle,CustomImage,Disc,LowerAplha…
例5:为列表项添加自定义图像:

<asp:BulletedList id=”blMovies” DataSourceID=”srcMovies” DataTextField=”Title”         BulletStyle=”CustomImage” BulletImageUrl=”~/Images/Bullet.gif”   Runat=”server” /><asp:SqlDataSource id=”srcMovies” SelectCommand=”SELECT Id, Title FROM Movies”        ConnectionString=”<%$ ConnectionStrings:Movies %>”  Runat=”server” />

可以通过DisplayMode属性修改每个列表项的外观,属性接受以下值:
        ● HyperLink: 呈现为一个到其它页面的链接
        ● LinkButton: 呈现一个LinkButton控件。
        ● Text: 呈现一个简单文本
例6:为列表项呈现链接

<asp:BulletedList id=”blWebsites” DisplayMode=”HyperLink” Target=”_blank” Runat=”server”>        <asp:ListItem Text=”Yahoo” Value=”http://www.Yahoo.com” />        <asp:ListItem Text=”Google” Value=”http://www.Google.com” />        <asp:ListItem Text=”Deja” Value=”http://www.Deja.com” /></asp:BulletedList>

注:BulletedList与其它List控件不同,它不支持属性SelectedIndex、SelectedItem、SelectedValue。因为它压根儿无法选择。

asp.net学习之 数据绑定控件--List数据绑定控件的更多相关文章

  1. asp.net学习之数据绑定控件、数据源控件概述

    原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细:      ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...

  2. asp.net学习之 数据绑定控件--表格绑定控件

    原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...

  3. asp.net学习之Repeater控件

    asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...

  4. asp.net学习之DataList控件

    asp.net学习之DataList控件   DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...

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

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

  6. WP8.1学习系列(第二十三章)——到控件的数据绑定

    在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...

  7. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>

    ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...

  8. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>

    分页     在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...

  9. ASP.NET关于Login控件使用,LoginView 控件,CreateUserWizard 控件

    原文:ASP.NET关于Login控件使用,LoginView 控件,CreateUserWizard 控件 Login控件它是属于Membership服务的一部分,必须配置Membership提供程 ...

随机推荐

  1. ContentProvider的使用

    这方面的资料应该网上已经很多了,我在这里只是做简单的总结就行了. 如题:ContentProvider是android的内容提供器,可以为应用程序提供各种的数据,例如数据表,txt文件,xml文件等等 ...

  2. PHP扩展memcache模

    研究yii当配套部件,发现自己PHP甚至不支持memcache该模块,于是,我就展开位. 本机环境:win8.1 开发环境:php 5.5  第一步:先把所需的文件包下载全然,我已经打包好,这里能够下 ...

  3. ** poj Y2K Accounting Bug 2586

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10117   Accepted: 50 ...

  4. Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)

    原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据 ...

  5. 流动python - 什么是魔术方法(magic method)

    我们经常看到各种各样的方法已经被包围了由双下划线,例如__init__,他们是魔术方法. 魔术方法python语言预订好"协议",在不同情况下不同的魔术方法,是隐式调用.我们重写这 ...

  6. 2015-12-1 Visual Studio 2015 Update 1发布

    http://news.cnblogs.com/n/533856/ 下载地址 文件名 cn_visual_studio_enterprise_2015_with_update_1_x86_x64_dv ...

  7. android关键知识

    1.handler 与Looper 与MessageQueue .Message关系 handler:是处理主线程(ui线程)处理耗时操作的线程,通过post message到MessageQueue ...

  8. 花生壳宣布网站的网址直接绑定到详细的项目——jboss版本

    花生壳公布,首先要有域名.然后激活域名,详细的公布就不说了,网上有非常多资料,这里是在jboss下直接将网址与详细的项目相应.做法有点不地道 假设跟图上一样配置的话.訪问网址相当于訪问的是http:/ ...

  9. [three.js] 地图不能解决重复的问题 Solving with Texture RepeatWrapping Fail Issue

    有些事情,如果你正在寻找侯,怎么也找不到. 有的东西,不经意间,到处: 我认为这是生活中常有的事. 然而,在互联网的浩瀚大海,这同样适用. 正常的一小会儿的积累, 投入少, 积累, 洋大海, 载起一帆 ...

  10. War文件部署(转)

    其实,开始要求将源码压缩成War文件时,一头雾水! 公司项目要求做CAS SSO单点登录 也就是这玩意.... 其实war文件就是Java中web应用程序的打包.借用一个老兄的话,“当你一个web应用 ...