列表框绑定数据
事实上,ASP.NET允许你把列表框的内容跟对象绑定起来。这个对象可以是一个数组,一个集合对象,一个数据库甚至是一个XML文件。下面的例子演示了怎么把一个字符串数组绑定到列表框控件上。我们将在后面更详细地探究XML数据的绑定。
<script runat="server">
Sub Page_Load(src as Object, e as EventArgs)
Dim arrPizzaTopping as String() = _
{ "Supreme", "Italian Classic", "Meat Lover" }
lstPizzaTopping.DataSource = arrPizzaTopping
lstPizzaTopping.DataBind()
End Sub
</script>
...
...
<asp:listbox rows="1" id="lstPizzaTopping" runat="server" />
如果我们给数组添加一个新的元素会怎么样?列表框会反映出结果吗?不会的,除非你再一次使用 DataBind 方法。利用这种数据绑定技术,在什么时候什么地方更新列表框,你拥有完全的控制权。
让我们看看另外一个例子,在ASP.NET中用 ArrayList 对象绑定数据。这个 ArrayList 跟VB中的数组有点相似,但是它功能更强,它能支持更多复杂的数据类型。ArrayList d实际上是一个集合,所以我们可以把它作为一个集合。添加一个新项,我们调用 Add 方法并提供对象去 Add,在这种情况下它是一个字符串。
<script runat="server">
Sub Page_Load(src as Object, e as EventArgs)
Dim arrPizzaTopping as new ArrayList()
arrPizzaTopping.Add("Supreme")
arrPizzaTopping.Add("Italian Classic")
arrPizzaTopping.Add("Meat Lover")
lstPizzaTopping.DataSource = arrPizzaTopping
lstPizzaTopping.DataBind()
End Sub
</script>
...
...
<asp:listbox rows="1" id="lstPizzaTopping" runat="server" />
数据绑定是把脚本跟用户界面分离开来的一个例子(比如HTML代码)。但是像我们上面提到的数据绑定技术,我们只能绑定静态数据(这些数据应该被硬编码进我们的aspx 文件)。 如果数据是动态将会怎么样?如果我们想在其他页面重用列表框,又会怎么样?为了解决这些问题,我们需要依赖于额外的数据源。典型的,我们使用数据库把列表框中的内容存储在表中。有很多文章以及讨论了这种技术。举例来说,你可以查阅Scott Mitchell 关于用Access数据库为列表控件绑定数据的文章。
关于数据库的讲了很多,现在我们试着使用一下另一种方法——XML文件。XML文件是一个纯文本文件,所以你可以很容易地用记事本创建和编辑它。下面的代码块是包含提供给列表框控件数据的XML文件的一个例子。它有两个部分,这由注释很清晰地标识出来。第一部分包含了关于"pizza toppings"的列表,第二部分包含了关于"pizza crust"的列表。每一部分有多个条目,在每一条目中又有 <value> 和 <desc> 两个元素。请记住,这个XML文件只是一个例子。你能定义你自己的元素和内容。好像你已经饿了,但是别抱怨我。无论如何, pizza 和编程是非常匹配的。
<?xml version="1.0" standalone="yes" ?>
<lookup>
<!-- START OF: Topping -->
<topping>
<value>supreme</value>
<desc>Supreme</desc>
</topping>
<topping>
<value>italianclassic</value>
<desc>Italian Classic</desc>
</topping>
<topping>
<value>meatlover</value>
<desc>Meat Lover</desc>
</topping>
<!-- END OF: Topping -->

