ASP.NET网站制作之ASP.NET Atlas ListView显现列表数据
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)asp.net|数据|显现 在今朝的年夜部分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中有以下模版:
[*]layoutTemplate:这个模版用来衬着包括列表项目标容器(比方利用<table>标志),列表的头部(比方利用<thead>标志),尾部等。您必需为ListView指定一个layoutTemplate。并且这个模版必需包括一个itemTemplate模版,也可选包括一个separatorTemplate模版。
[*]itemTemplate:这个模版用来衬着列表中的一个项目(比方利用<tr>标志)。这个模版必需被置于layoutTemplate中。
[*]separatorTemplate:这个模版用来衬着列表中的项目之间的分开元素(比方利用<hr>标志)。这个模版必需被置于layoutTemplate中。
[*]emptyTemplate.:这个模版用来衬着没有项目存在时的ListView。此时大概与该ListView相干的DataSource工具中没有项目,或是正在从服务器中获得的过程当中。
ListView中另有一些属性:
[*]itemCssClass:指定项目条目标cssclass。
[*]alternatingItemCssClass:指定距离的项目条目标cssclass。
[*]selectedItemCssClass:指定被选中的项目条目标cssclass。
[*]separatorCssClass:指定分开元素的cssclass。
[*]itemTemplateParentElementId:这个属性指定了itemTemplate和separatorTemplate的父元素。如许itemTemplate和separatorTemplate元素就能够在个中被反复衬着。
ListView另有一些承继于Sys.UI.Data.DataControl基类的办法/属性,由于鄙人面的代码中我们不必要利用,这里临时略过。假如您感乐趣。OK,让我们经由过程一个实例来讲明怎样利用ListView控件:
起首,我们编写一个前往.NET中DataTable的WebService。注重到在这里将承继于Microsoft.Web.Services.DataService基类,而且为service办法加上界说在称号空间System.ComponentModel中的属性DataObjectMethod。在service办法的开首,我们利用System.Threading.Thread.Sleep(2000)来摹拟2秒钟的收集提早,以即可以看到emptyTemplate中的内容。
publicclassMyService:Microsoft.Web.Services.DataService{
publicDataTableGetListData()
{
System.Threading.Thread.Sleep(2000);
DataTabledt=newDataTable("MyListData");
dt.Columns.Add("Name",typeof(string));
dt.Columns.Add("Email",typeof(string));
DataRownewRow;
for(inti=0;i<5;++i)
{
newRow=dt.NewRow();
newRow["Name"]=string.Format("Dflying{0}",i);
newRow["Email"]=string.Format("Dflying{0}@dflying.net",i);
dt.Rows.Add(newRow);
}
returndt;
}
}
然后,增加一些ASP.NET页面中必需的控件/标志:
<atlas:ScriptManagerID="ScriptManager1"runat="server"/>
<!--ElementformyList(container)-->
<divid="myList"></div>
<!--LayoutElements-->
<divstyle="display:none;">
</div>
在下面的标志中,我们到场了三个标志:一个必需的ScriptManager控件。一个id为myList的div,用来让Atlas把衬着后的ListView安排于这里。一个埋没的div,用于界说我们的模版。这个埋没div中的元素在页面上是不成见的,只是用来供应给Atlas需要的模版。
我们在这个埋没的div中到场以下ListView的模版:
<!--LayoutTemplate-->
<tableid="myList_layoutTemplate"border="1"cellpadding="3">
<thead>
<tr>
<td><span>No.</span></td>
<td><span>Name</span></td>
<td><span>Email</span></td>
</tr>
</thead>
<!--RepeatTemplate-->
<tbodyid="myList_itemTemplateParent">
<!--RepeatItemTemplate-->
<trid="myList_itemTemplate">
<td><spanid="lblIndex"/></td>
<td><spanid="lblName"/></td>
<td><spanid="lblEmail"/></td>
</tr>
<!--SeparatorItemTemplate-->
<trid="myList_separatorTemplate">
<tdcolspan="3">Separator</td>
</tr>
</tbody>
</table>
<!--EmptyTemplate-->
<divid="myList_emptyTemplate">
NoData
</div>
下面的代码中您能够看到我提到的一切四种模版。别的还要指定每个模版一个id,将用于上面的Atlas剧本声明中。在这个例子中我将以HTMLTable的情势衬着这个ListView,很抱愧分开元素将会很丑恶(一个空行)。
最初在页面中增加Atlas剧本声明:
<dataSourceid="listDataSource"autoLoad="true"serviceURL="MyService.asmx"/>
<listViewid="myList"itemTemplateParentElementId="myList_itemTemplateParent">
<bindings>
<bindingdataContext="listDataSource"dataPath="data"property="data"/>
</bindings>
<layoutTemplate>
<templatelayoutElement="myList_layoutTemplate"/>
</layoutTemplate>
<itemTemplate>
<templatelayoutElement="myList_itemTemplate">
<labelid="lblIndex">
<bindings>
<bindingdataPath="$index"transform="Add"property="text"/>
</bindings>
</label>
<labelid="lblName">
<bindings>
<bindingdataPath="Name"property="text"/>
</bindings>
</label>
<labelid="lblEmail">
<bindings>
<bindingdataPath="Email"property="text"/>
</bindings>
</label>
</template>
</itemTemplate>
<separatorTemplate>
<templatelayoutElement="myList_separatorTemplate"/>
</separatorTemplate>
<emptyTemplate>
<templatelayoutElement="myList_emptyTemplate"/>
</emptyTemplate>
</listView>
这里我增加了一个Atlas客户端DataSource工具以从WebService中获得数据。这里我们临时未几谈DataSource(大概在后续文章中有所先容)。让我们来看一下ListView相干的界说:在ListView的界说中,我们指定了itemTemplateParentElementId属性。然后在ListView的外部界说了一个binding段,用来把DataSource中获得的数据与这个ListView绑定起来。我们还界说了四个模版段,每一个模版段都用layoutElement与下面界说过的四种模版联系关系。注重到在layoutTemplate模版中的第一个label控件,我们在其绑定中指定了一个Addtransformer以将从0入手下手的按次变成从1入手下手(关于AtlasTransformer,请参考我的这篇文章:http://dflying.cnblogs.com/archive/2006/04/05/367908.html)。
半途而废,运转一下吧。
装载中:
装载完成:
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
页:
[1]