动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

 ASP.NET Atlas ListView显示列表数据

作者来源: 
阅读 数 674 人次 , 2006-4-26 9:45:00 


  在目前的大部分Web程序中,我们都需要显示给用户一些列表数据。ASP.NET中的GridView服务器控件提供了这种功能,Atlas中的客户端控件ListView也可以在客户端提供类似功能,并以AJAX方式运行。 虽然您可以使用传统的GridView控件加上Atlas的UpdatePanel提供同样的AJAX运行方式,但是这种实现方式较低效,也不是“纯粹”的Atlas方法。推荐的方法是采用Atlas的客户端控件ListView来代替。不要担心,Atlas的ListView控件和GridView一样简单,而其二者在很多概念方面是相似的,例如ItemTemplate。但是需要注意的是目前IDE中并没有提供对Atlas脚本的智能感知功能,加之Atlas脚本也没有编译时期检查,所以在书写代码的时候应该格外小心。

  使用ListView的时候应该提供给其一些必要的模版(Template),以告诉Atlas应该如何渲染您的内容。ListView中有如下模版:
  1. layoutTemplate:这个模版用来渲染包含列表项目的容器(例如使用 <table>标记),列表的头部(例如使用 <thead>标记),尾部等。您必须为ListView指定一个layoutTemplate。而且这个模版必须包含一个itemTemplate模版,也可选包含一个separatorTemplate模版。
  2. itemTemplate:这个模版用来渲染列表中的一个项目(例如使用 <tr>标记)。这个模版必须被置于layoutTemplate中。
  3. separatorTemplate:这个模版用来渲染列表中的项目之间的分隔元素(例如使用 <hr>标记)。这个模版必须被置于layoutTemplate中。
  4. emptyTemplate.:这个模版用来渲染没有项目存在时的ListView。此时可能与该ListView相关的DataSource对象中没有项目,或是正在从服务器中取得的过程中。
  ListView中还有一些属性:
  1. itemCssClass:指定项目条目的css class。
  2. alternatingItemCssClass:指定间隔的项目条目的css class。
  3. selectedItemCssClass:指定被选中的项目条目的css class。
  4. separatorCssClass:指定分隔元素的css class。
  5. itemTemplateParentElementId:这个属性指定了itemTemplate和separatorTemplate的父元素。这样itemTemplate和separatorTemplate元素就可以在其中被重复渲染。
  ListView还有一些继承于Sys.UI.Data.DataControl基类的方法/属性,因为在下面的代码中我们不需要使用,这里暂且略过。如果您感兴趣。OK,让我们通过一个实例来说明如何使用ListView控件:

  首先,我们编写一个返回.NET中DataTable的Web Service。注意到在这里将继承于Microsoft.Web.Services.DataService基类,并且为service方法加上定义在名称空间System.ComponentModel中的属性DataObjectMethod。在service方法的开头,我们使用System.Threading.Thread.Sleep(2000)来模拟2秒钟的网络延迟,以便可以看到emptyTemplate中的内容。

[WebService(Namespace = "http://tempuri.org/")]
ASP.NET Atlas ListView显示列表数据(图一)[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ASP.NET Atlas ListView显示列表数据(图二)ASP.NET Atlas ListView显示列表数据(图三)public class MyService : Microsoft.Web.Services.DataService ASP.NET Atlas ListView显示列表数据(图四){
ASP.NET Atlas ListView显示列表数据(图五)
ASP.NET Atlas ListView显示列表数据(图六) [DataObjectMethod(DataObjectMethodType.Select)]
ASP.NET Atlas ListView显示列表数据(图七) public DataTable GetListData()
ASP.NET Atlas ListView显示列表数据(图八)ASP.NET Atlas ListView显示列表数据(图九) ASP.NET Atlas ListView显示列表数据(图十){
ASP.NET Atlas ListView显示列表数据(图十) System.Threading.Thread.Sleep(2000);
ASP.NET Atlas ListView显示列表数据(图十二)
ASP.NET Atlas ListView显示列表数据(图十三) DataTable dt = new DataTable("MyListData");
ASP.NET Atlas ListView显示列表数据(图十四) dt.Columns.Add("Name", typeof(string));
ASP.NET Atlas ListView显示列表数据(图十五) dt.Columns.Add("Email", typeof(string));
ASP.NET Atlas ListView显示列表数据(图十六) DataRow newRow;
ASP.NET Atlas ListView显示列表数据(图十七) for (int i = 0; i < 5; ++i)
ASP.NET Atlas ListView显示列表数据(图十八)ASP.NET Atlas ListView显示列表数据(图十九) ASP.NET Atlas ListView显示列表数据(图二十){
ASP.NET Atlas ListView显示列表数据(图二十) newRow = dt.NewRow();
ASP.NET Atlas ListView显示列表数据(图二十二) newRow["Name"] = string.Format("Dflying {0}", i);
ASP.NET Atlas ListView显示列表数据(图二十三) newRow["Email"] = string.Format("Dflying{0}@dflying.net", i);
ASP.NET Atlas ListView显示列表数据(图二十四) dt.Rows.Add(newRow);
ASP.NET Atlas ListView显示列表数据(图二十五) }
ASP.NET Atlas ListView显示列表数据(图二十六) return dt;
ASP.NET Atlas ListView显示列表数据(图二十七) }
ASP.NET Atlas ListView显示列表数据(图二十八)}

  然后,添加一些ASP.NET页面中必须的控件/标记:

<atlas:ScriptManager ID="ScriptManager1" runat="server" />
ASP.NET Atlas ListView显示列表数据(图二十九) <!-- Element for myList (container) -->
ASP.NET Atlas ListView显示列表数据(图三十) <div id="myList"> </div>
ASP.NET Atlas ListView显示列表数据(图三十) <!-- Layout Elements -->
ASP.NET Atlas ListView显示列表数据(图三十二) <div style="display: none;">
ASP.NET Atlas ListView显示列表数据(图三十三) </div>

  在上面的标记中,我们加入了三个标记:一个必须的ScriptManager控件。一个id为myList的div,用来让Atlas把渲染后的ListView放置于这里。一个隐藏的div,用于定义我们的模版。这个隐藏div中的元素在页面上是不可见的,只是用来提供给Atlas必要的模版。

  我们在这个隐藏的div中加入如下ListView的模版:

<!-- Layout Template -->
ASP.NET Atlas ListView显示列表数据(图三十四) <table id="myList_layoutTemplate" border="1" cellpadding="3">
ASP.NET Atlas ListView显示列表数据(图三十五) <thead>
ASP.NET Atlas ListView显示列表数据(图三十六) <tr>
ASP.NET Atlas ListView显示列表数据(图三十七) <td> <span>No. </span> </td>
ASP.NET Atlas ListView显示列表数据(图三十八) <td> <span>Name </span> </td>
ASP.NET Atlas ListView显示列表数据(图三十九) <td> <span>Email </span> </td>
ASP.NET Atlas ListView显示列表数据(图四十) </tr>
ASP.NET Atlas ListView显示列表数据(图四十) </thead>
ASP.NET Atlas ListView显示列表数据(图四十二) <!-- Repeat Template -->
ASP.NET Atlas ListView显示列表数据(图四十三) <tbody id="myList_itemTemplateParent">
ASP.NET Atlas ListView显示列表数据(图四十四) <!-- Repeat Item Template -->
ASP.NET Atlas ListView显示列表数据(图四十五) <tr id="myList_itemTemplate">
ASP.NET Atlas ListView显示列表数据(图四十六) <td> <span id="lblIndex" /> </td>
ASP.NET Atlas ListView显示列表数据(图四十七) <td> <span id="lblName" /> </td>
ASP.NET Atlas ListView显示列表数据(图四十八) <td> <span id="lblEmail" /> </td>
ASP.NET Atlas ListView显示列表数据(图四十九) </tr>
ASP.NET Atlas ListView显示列表数据(图五十) <!-- Separator Item Template -->
ASP.NET Atlas ListView显示列表数据(图五十) <tr id="myList_separatorTemplate">
ASP.NET Atlas ListView显示列表数据(图五十二) <td colspan="3">Separator </td>
ASP.NET Atlas ListView显示列表数据(图五十三) </tr>
ASP.NET Atlas ListView显示列表数据(图五十四) </tbody>
ASP.NET Atlas ListView显示列表数据(图五十五) </table>
ASP.NET Atlas ListView显示列表数据(图五十六) <!-- Empty Template -->
ASP.NET Atlas ListView显示列表数据(图五十七) <div id="myList_emptyTemplate">
ASP.NET Atlas ListView显示列表数据(图五十八) No Data
ASP.NET Atlas ListView显示列表数据(图五十九) </div>

  上面的代码中您可以看到我提到的所有四种模版。另外还要指定每一个模版一个id,将用于下面的Atlas脚本声明中。在这个例子中我将以HTML Table的形式渲染这个ListView,很抱歉分隔元素将会很丑陋(一个空行)。

  最后在页面中添加Atlas脚本声明:

<dataSource id="listDataSource" autoLoad="true" serviceURL="MyService.asmx" />
ASP.NET Atlas ListView显示列表数据(图六十)
ASP.NET Atlas ListView显示列表数据(图六十) <listView id="myList" itemTemplateParentElementId="myList_itemTemplateParent">
ASP.NET Atlas ListView显示列表数据(图六十二) <bindings>
ASP.NET Atlas ListView显示列表数据(图六十三) <binding dataContext="listDataSource" dataPath="data" property="data" />
ASP.NET Atlas ListView显示列表数据(图六十四) </bindings>
ASP.NET Atlas ListView显示列表数据(图六十五) <layoutTemplate>
ASP.NET Atlas ListView显示列表数据(图六十六) <template layoutElement="myList_layoutTemplate" />
ASP.NET Atlas ListView显示列表数据(图六十七) </layoutTemplate>
ASP.NET Atlas ListView显示列表数据(图六十八) <itemTemplate>
ASP.NET Atlas ListView显示列表数据(图六十九) <template layoutElement="myList_itemTemplate">
ASP.NET Atlas ListView显示列表数据(图七十) <label id="lblIndex">
ASP.NET Atlas ListView显示列表数据(图七十) <bindings>
ASP.NET Atlas ListView显示列表数据(图七十二) <binding dataPath="$index" transform="Add" property="text"/>
ASP.NET Atlas ListView显示列表数据(图七十三) </bindings>
ASP.NET Atlas ListView显示列表数据(图七十四) </label>
ASP.NET Atlas ListView显示列表数据(图七十五) <label id="lblName">
ASP.NET Atlas ListView显示列表数据(图七十六) <bindings>
ASP.NET Atlas ListView显示列表数据(图七十七) <binding dataPath="Name" property="text" />
ASP.NET Atlas ListView显示列表数据(图七十八) </bindings>
ASP.NET Atlas ListView显示列表数据(图七十九) </label>
ASP.NET Atlas ListView显示列表数据(图八十) <label id="lblEmail">
ASP.NET Atlas ListView显示列表数据(图八十) <bindings>
ASP.NET Atlas ListView显示列表数据(图八十二) <binding dataPath="Email" property="text" />
ASP.NET Atlas ListView显示列表数据(图八十三) </bindings>
ASP.NET Atlas ListView显示列表数据(图八十四) </label>
ASP.NET Atlas ListView显示列表数据(图八十五) </template>
ASP.NET Atlas ListView显示列表数据(图八十六) </itemTemplate>
ASP.NET Atlas ListView显示列表数据(图八十七) <separatorTemplate>
ASP.NET Atlas ListView显示列表数据(图八十八) <template layoutElement="myList_separatorTemplate" />
ASP.NET Atlas ListView显示列表数据(图八十九) </separatorTemplate>
ASP.NET Atlas ListView显示列表数据(图九十) <emptyTemplate>
ASP.NET Atlas ListView显示列表数据(图九十) <template layoutElement="myList_emptyTemplate"/>
ASP.NET Atlas ListView显示列表数据(图九十二) </emptyTemplate>
ASP.NET Atlas ListView显示列表数据(图九十三) </listView>

  这里我添加了一个Atlas客户端DataSource对象以从Web Service中取得数据。这里我们暂且不多谈DataSource(可能在后续文章中有所介绍)。让我们来看一下ListView相关的定义:在ListView的定义中,我们指定了itemTemplateParentElementId属性。然后在ListView的内部定义了一个binding段,用来把DataSource中取得的数据与这个ListView绑定起来。我们还定义了四个模版段,每个模版段都用layoutElement与上面定义过的四种模版关联。注意到在layoutTemplate模版中的第一个label控件,我们在其绑定中指定了一个Add transformer以将从0开始的顺序变为从1开始(关于Atlas Transformer,请参考我的这篇文章:http://dflying.cnblogs.com/archive/2006/04/05/367908.html)。

  大功告成,运行一下吧。

  装载中:

ASP.NET Atlas ListView显示列表数据(图九十四)

装载完成:
ASP.NET Atlas ListView显示列表数据(图九十五)

  
 本文TagsC#  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:ASP.NET 2.0客户端回调的实现分析
· 下一篇:使用 ASP.NET Atlas PageNavigator控件实现客户端分页导航
· 10天学会ASP.net之第九天
· Microsoft .NET 框架常见问题
· 如何在asp+ 中使用自定义的pagelet
· VB.net 调用带参数存储过程
· ASP.NET窗体对话框的实现


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077