在ASP.NET 2.0中操作数据之三十一:使用DataList来一

  在前两章的做的DataList的例子里我们都是使用单列的HTML<table>来显示数据.而自定义使DataList将数据显示在多列多行的table里也非常容易.而且还可以以单行多列来显示数据.

  我们可以通过RepeatColumns和RepeatDirection属性来自定义DataList.这两个属性决定了数据显示时候的列数和方向(水平或垂直).图1是以一个3列的table来显示product信息的DataList例子.

/uploads/allimg/200612/1K25Bc2_0.png

图 1: DataList 一行显示三条product信息

通过一行显示多条记录,DataList可以更有效的利用屏幕的水平空间.在这章里我们将探讨这两个属性.

第一步: 在 DataList显示Product信息

  在学习RepeatColumns和RepeatDirection属性前,我们先用标准的单列多行DataList显示Product信息.我们使用下面的标记语言来显示product的name,category和price:

<h4>Product Name</h4> Available in the Category Name store for Price

  在前面的教程里我们已经做过如何将数据绑定到DataList,因此这一步我们很快带过.打开DataListRepeaterBasics文件夹下的RepeatColumnAndDirection.aspx页,拖一个DataList进去.从DataList的智能标签里创建一个ObjectDataSource,使用ProductsBLL类的GetProducts方法配置.在INSERT,UPDATE和DELETE标签里选择None.

  在创建完ObjectDataSource并绑定到DataList后,Visual Studio会自动创建一个显示product字段的name和value的ItemTemplate.调整ItemTemplate— 通过直接修改标记语言或智能标签里的Edit Templates选项— 将Product Name, Category Name和Price文本用Label控件来替代,用合适的绑定语法将分配的值绑定到Text属性.在做完这些后,你的页的标记语言看起来应该和下面差不多:

<asp:DataList runat="server" DataKeyField="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False"> <ItemTemplate> <h4> <asp:Label runat="server" Text='<%# Eval("ProductName") %>'></asp:Label> </h4> Available in the <asp:Label runat="server" Text='<%# Eval("CategoryName") %>' /> store for <asp:Label runat="server" Text='<%# Eval("UnitPrice", "{0:C}") %>' /> </ItemTemplate> </asp:DataList> <asp:ObjectDataSource runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetProducts" TypeName="ProductsBLL"> </asp:ObjectDataSource>

  注意在UnitPrice的Eval绑定语法里我包含了一个格式符,用来将值转换为货币格式- Eval("UnitPrice","{0:C}").在浏览器里浏览这个页,如图2所示,DataList以单列多行的table显示product信息.

/uploads/allimg/200612/1K25B5O_0.png

图 2: 默认情况下DataList 显示一个单列多行的table

第二步: 修改DataList的布局方向

  默认情况下DataList垂直的用单列多行table来显示项(item).这个可以通过RepeatDirection属性来修改.将RepeatDirection属性从Vertical改为Horizontal后,DataList会以单行多列显示数据.可以在设计器里选择RepeatDirection属性窗口修改这个属性.修改完后设计器马上会调整DataList的布局,创建一个单行多列的界面(见图3).

/uploads/allimg/200612/1K25Y549_0.png

图 3: RepeatDirection属性用来决定DataList的项的布局方向

  当显示小数据量时,一个单行多列的table是一个理想的选择.而大数据量时,单行需要很多列,屏幕会因为显示不了这么多项而出现水平滚动条.图4显示在单行的DataList里显示product信息的情况.因为product的数量太多(81),用户不得不向右滚动来查看每个product的信息.

/uploads/allimg/200612/1K25G251_0.png

图 4: 大数据量时单列的DataList会有水平滚动条,

第三步: 以多列多行的table来显示数据

  为了创建多行多列的DataList,我们需要设置RepeatColumns属性为显示的列数.默认的RepeatColumns属性为0,因此DataList会单列或单行的显示所有的项(取决于RepeatDirection属性的值).

  我们将在例子里每行显示3个product.因此设置RepeatColumns属性为3.做完这个后,在浏览器里浏览页面.如图5所示,product显示以3列多行列出.

/uploads/allimg/200612/1K25N048_0.png

图 5: 每行显示3条product

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwwfy.html