技术开发 频道

ASP.NET4灵活显标记:数据Web控件改进

  2、ListView控件的增强支持

  ListView控件能够使用模板显示一组数据记录。像GridView一样,ListView控件也支持分页、排序、编辑和删除数据。它也可以用来插入数据。开发人员在使用ASP.NET 3.5版本的ListView控件时必须至少需要提供如下两个模板:

  ItemTemplate—指定绑定到ListView中的每一项要提供的标记

  LayoutTemplate—指定ListView的外层标记,并包含一个Web控件以指出应当提供ItemTemplate中的标记

  在大多数情况下,LayoutTemplate只是包含一个Web控件来指定ItemTemplate中的标记应出现的位置,结果将产生一个使用以下标记的ListView控件:

<asp:ListView runat="server" ...>
  
<LayoutTemplate>
      
<asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
  
</LayoutTemplate>
  
<ItemTemplate>
      ...
  
</ItemTemplate>
</asp:ListView>

  在上面的例子中,LayoutTemplate模板的作用仅在于声明“ItemTemplate中的标记应该放到这里”。然而,无论如何,只要你使用ASP.NET 3.5,那么你还是不得不显式地在ListView的标记内定义这个LayoutTemplate模板。

  好消息是,在ASP.NET 4.0版本中,您可以省略LayoutTemplate模板—ItemTemplate现在是唯一在ListView内必须出现的模板。下面的声明标记片断显示了这一新的缩写语法:

<asp:ListView runat="server" ...>
  
<ItemTemplate>
      ...
  
</ItemTemplate>
</asp:ListView>

  3、针对CheckBoxList和RadioButtonList控件的新选项RepeatLayout

  欲了解有关ListView控件的更多信息,请参考有关的网络文章,在此省略讨论。

  下面,我们来讨论ASP.NET 4.0在CheckBoxList和RadioButtonList控件中提供的一个新的RepeatLayout选项。

  CheckBoxList和RadioButtonList控件能够显示对应于一些给定数据的一组复选框或单选按钮;因此,对于基于数据库查询生成一组复选框或单选按钮是非常有用的。这两个控件都具有一个RepeatLayout属性,用于确定这一组复选框或单选按钮是如何布局的。在ASP.NET 3.5中此属性有两个可能的设置:

  Table(默认)—使用元素布局数据项。默认情况下,每一个复选框或单选按钮被布置在它自己的表格行中。使用RepeatColumns属性将会使每一行中都显示一组固定数目的复选框或单选按钮。

  Flow—使用元素布局每个复选框或单选按钮,且默认情况下,每个元素后面要插入一个人工换行符。如果设置了RepeatColumns属性,则表示在一定数目的复选框或单选按钮后面要插入一个人工换行符。

  ASP.NET 4.0中,又把如下两个额外的设置添加到RepeatLayout属性:

  OrderedList—使用

  元素布局其中的项。你不能把RepeatColumns属性与此设置一起使用。这样做将导致访问网页时抛出一个异常。

  UnorderedList—使用

  元素布局其中的项。你也不能把RepeatColumns属性与此设置一起使用。这样做也将导致访问网页时抛出一个异常。

  请考虑下面的CheckBoxList控件代码,它的RepeatLayout属性被设置为UnorderedList。

<asp:CheckBoxList ... runat="server" DataTextField="CategoryName"
       DataValueField
="CategoryID" RepeatLayout="UnorderedList">
</asp:CheckBoxList>

   当绑定到Northwind数据库的产品类别时,上述控件将呈现以下标记:

<ul id="...">
  
<li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Beverages</label></li>
  
<li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Condiments</label></li>
  
<li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Confections</label></li>
   ...
</ul>

  请注意,上面的CheckBoxList控件是如何生成一个无序列表(<ul>)的,以及每个复选框标记是如何呈现在一个列表标记(<li>)内部的。

  ASP.NET 4.0提供OrderedList和UnorderedList这两个选项的想法是,复选框或单选按钮更易于使用CSS进行布局。目前,已有很多的网页讨论了如何使用CSS来布局有序和无序列表元素的问题;因此,在此我们亦省略相关讨论。

  4、小结

  总体来看,ASP.NET 4.0提供给Web窗体开发人员更大的灵活性以控制最终呈现的标记。许多模板控件原先都添加了元素以实现样式控制。现在,这些标签可以被选择性通过一个新的属性RenderOuterTable加以抑制。同样,CheckBoxList和RadioButtonList控件的RepeatLayout属性也被扩展,包括两个新的设置—OrderedList和UnorderedList,这给开发者提供可选择的方式来影响这些控件生成的标记。

  此外,ListView控件也被进一步瘦身—LayoutTemplate模板成为可选的。

     

0
相关文章