了解使用XML为列表控件绑定数据的各种不同的方法
介绍
在web开发项目中我们需要经常写一些代码从数据源读取动态数据到列表控件中在经典ASP时期这是一件相对比较困难的任务例如我们必须查询数据库找回 RecordSet 并且在手动创建HTML标签时还要重述RecordSet
现在在ASPNET中你做同样的事情有了更好的办法此外除了用数据库作为数据源你还可以使用各种数据源比如XML文件哪一个更好呢?这会在性能适应性可靠性易配置性安全等方面引起争论在这里我不想讨论这些
这篇文章讨论了几种可选择的办法了解使用XML为列表控件绑定数据的各种不同的方法尽管我们使用ListBox 作为例子但你可以很容易地把这种技术扩展到其他从 SystemWebUIWebControlsListControl 类继承而来的列表控件它们包括CheckBoxList DropDownList 和 RadioButtonList
硬编码列表框
作为开始让我们回忆一下通常我们是怎样用HTML定义一个列表框 (ListBox)的下面展示了一个列表框的原始代码这是最简单的方法且费用最少但是缺少一些弹性来控制列表框的行为
<select size= id=lstPizzaTopping>
<option value=supreme>Supreme</option>
<option value=italianclassic>Italian Classic</option>
<option value=meatlover>Meat Lover</option>
</select>
在ASPNET中你可以使用列表框得到同样的结果但是具有更多性能来控制它的行为和属性
<asp:listbox rows= id=lstPizzaTopping runat=server>
<asp:listitem value=supreme>Supreme</asp:listitem>
<asp:listitem value=italianclassic>Italian Classic</asp:listitem>
<asp:listitem value=meatlover>Meat Lover</asp:listitem>
</asp:listbox>
让我们在代码中使用一点手法除了在列表框中硬编码进去一些项你可以使用ListItem 对象生成一些项添加到列表框控件中ListItem 有两个参数项的文字以及值如果你没指定第二个参数那项的值将跟它的文字一样下面的代码演示了该怎么做
<script runat=server>
Sub Page_Load(src as Object e as EventArgs)
lstPizzaToppingItemsAdd(new ListItem(Supreme supreme))
lstPizzaToppingItemsAdd(new ListItem(Italian Classic italianclassic))
lstPizzaToppingItemsAdd(new ListItem(Meat Lover meatlover))
</script>
<asp:listbox rows= id=lstPizzaTopping runat=server />
列表框绑定数据
事实上ASPNET允许你把列表框的内容跟对象绑定起来这个对象可以是一个数组一个集合对象一个数据库甚至是一个XML文件下面的例子演示了怎么把一个字符串数组绑定到列表框控件上我们将在后面更详细地探究XML数据的绑定
<script runat=server>
Sub Page_Load(src as Object e as EventArgs)
Dim arrPizzaTopping as String() = _
{ Supreme Italian Classic Meat Lover }
lstPizzaToppingDataSource = arrPizzaTopping
lstPizzaToppingDataBind()
End Sub
</script>
<asp:listbox rows= id=lstPizzaTopping runat=server />
如果我们给数组添加一个新的元素会怎么样?列表框会反映出结果吗?不会的除非你再一次使用 DataBind 方法利用这种数据绑定技术在什么时候什么地方更新列表框你拥有完全的控制权
[] [] []