中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 其他
使用XML为列表控件绑定数据(2)
作者:佚名 时间:2007-09-04 15:44 出处:中国IT实验室 责编:月夜寒箫
              摘要:使用XML为列表控件绑定数据(2)

数据绑定是把脚本跟用户界面分离开来的一个例子(比如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 -->

<!-- START OF: Crust -->

<crust>

<value>original</value>

<desc>Original Crust</desc>

</crust>

<crust>

<value>handstretched</value>

<desc>Hand-Stretched Crust</desc>

</crust>

<crust>

<value>pan</value>

<desc>Pan Crust</desc>

</crust>

<!-- END OF: Crust -->

</lookup>

现在开始变魔术了。在这个XML文件中没有什么特别的,除非你把它加载到ADO.NET的DataSet中。ADO.NET 强有力地支持XML,它可以在XML文件上建立一个关系信息。举各例子,提供前面提到的那个XML文件,ADO.NET将自动创建一个名为lookup的DataSet,它包含两张表:tooping和crust。表tooping有两列(value和desc)三行。同样的,表crust也有(value和desc)三行。ADO.NET是通过模式来读和构造这些表的。下面的图形象的表示了DataSet  和它的 DataTable。

为了把XML文家加载到DataSet 中,你要使用下面的代码。第一行创建了一个新的 DataSet 实例。 第二行调用了ReadXml 方法并把XML文件的完整路径传递过去。我们使用 Server.MapPath 把文件的虚拟路径转换成物理路径。

            

Dim myDataSet as DataSet = New DataSet

myDataSet.ReadXml(Server.MapPath("lookup.xml"))

把表绑定到列表框是简单的。我们仅仅设置一下列表框的DataSource 和 DataMember 属性,使其指向特定的表,然后调用DataBind 方法就可以了。别忘了设置 DataTextField 和 DataValueField 属性,它们显示哪一列是作为值来使用,哪一列是作为文本来使用,因为ASP.NET是不能自动决定的!

            

<script runat="server">

Sub Page_Load(src as Object, e as EventArgs)

...

...

lstPizzaTopping.DataSource = myDataSet

lstPizzaTopping.DataMember = "topping"

lstPizzaTopping.DataBind()

End Sub

</script>

...

...

<asp:listbox rows="1"

id="lstPizzaTopping"

datatextfield="desc"

datavaluefield="value"

runat="server" />

在列表框中排序



有时候,你想要顺序的排列你的项。下面的代码演示了这种情况。第一行创建了一个表 topping的缺省视图,名为myDataView 的实例。第二行把sort 属性设置为desc ASC,让desc列中的数据升序排列。下一行,我们把列表框的 DataSource属性设置为 myDatView,然后调用 DataBind方法有效地传递列表框的内容。

            

Dim myDataView as DataView = myDataSet.Tables("topping").DefaultView

myDataView.Sort = "desc ASC"

lstPizzaTopping.DataSource = myDataView

lstPizzaTopping.DataBind()

性能问题



因为数据绑定是一个损耗资源的过程,所以你应该只在你需要的时候绑定列表控件。你应该在列表控件的内容是动态时,或者在要故意重用列表控件时绑定数据。后者比如同样一个列表框在多个页面显示。当你需要改变这些列表框的内容时,你会节省很多时间,因为你不需要一个个去修改。如果没有一个原因适合你,为了避免不必要的开支,你可以硬编码列表控件的内容。

在列表框中排列项也是需要耗费一定的资源。如果你想要列表框在任何地方任何时间都是排列号的,考虑用排列好的顺序编写XML文件,而不是在编程时排列列表框中的项。

结论



这篇文章介绍了在web页面上处理列表控件的各种方式。它从简单易懂的硬编码技术开始,使用array、ArrayList 绑定数据,最后使用XML来绑定数据。用XML绑定数据是一种你可以考虑代替数据库的数据绑定方法。它很容易实现,而且能避免SQL数据库给企业带来的高额费用。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有