asp.net学习之 数据绑定控件--List数据绑定控件
原文:asp.net学习之 数据绑定控件--List数据绑定控件
List控件(如 CheckBoxList、DropDownList、ListBox 和 RadioButtonList 类)继承自ListControl类,不能直接创建 ListControl 抽象类的实例。相反,此类由其他类(如 CheckBoxList、DropDownList、ListBox 和 RadioButtonList 类)继承以提供通用的基本功能。
ListControl 类的属性允许您指定用来填充列表控件的数据源。使用 DataSource 属性指定要绑定到列表控件的数据源。如果数据源包含多个表,请使用 DataMember 属性指定要使用的表。通过分别设置 DataTextField 和 DataValueField 属性,可以将数据源中的不同字段绑定到列表控件项的 ListItem.Text 和 ListItem.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=”—>” 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数据绑定控件的更多相关文章
- asp.net学习之数据绑定控件、数据源控件概述
原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细: ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...
- asp.net学习之 数据绑定控件--表格绑定控件
原文:asp.net学习之 数据绑定控件--表格绑定控件 数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- asp.net学习之DataList控件
asp.net学习之DataList控件 DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...
- 027. asp.net中数据绑定控件之 GridView控件
GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...
- WP8.1学习系列(第二十三章)——到控件的数据绑定
在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...
- 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>
ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...
- 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>
分页 在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...
- ASP.NET关于Login控件使用,LoginView 控件,CreateUserWizard 控件
原文:ASP.NET关于Login控件使用,LoginView 控件,CreateUserWizard 控件 Login控件它是属于Membership服务的一部分,必须配置Membership提供程 ...
随机推荐
- Jquery中使用setInterval和setTimeout 容易犯的低级错误
直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...
- JAVA技术交流群
推荐:组[八方扑灭]:http://jq.qq.com/?_wv=1027&k=RFLXu0. QQ: 292352612 集团专注于技术.软件project.JAVA.c\c++.WEB. ...
- Nginx+Varnish
Nginx+Varnish 实现动静分离,为服务器分流,降低服务器负载 相必大家在看加快网站响应速度方面的文章时,都提过这么一条:动静分离.那怎样实现动静分离呢,这里笔者就亲自搭建相关服务实现动静分离 ...
- 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称
转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...
- hdu1394--Minimum Inversion Number(线段树求逆序数,纯为练习)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- android学习经常使用的数据文件夹
android工程实践 1.仿360一键清理实现(一) "一键清理"是一个桌面图标,点击图标后,显示一个视图.进行清理动画.之后显示清理了几个进程,释放了多少M内存.点击" ...
- Cocos2d-x实现简单的翻牌效果
触发器互联网影响找了很多.有自己的点重写一个复杂的sprite类来实现.简单的操作来对引擎的使用CCOrbitCamera实现,但是,也存在一些问题,后变反了. 我在用的仅仅是一个简单的翻牌效果,点击 ...
- t持久化与集群部署开发详解
Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...
- WEB安全实战(一)SQL盲注
前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全 ...
- spring mvc 错误摘要--。位。
1....identifier of an instance of org.szgzw.ent.profile.baseinfo.enterprise.EnterpriseEntity was alt ...