2009-05-21 159 views
0

是否有可能使用asp.net ajax 4.0客户端模板重新使用客户端模板?我有一个场景,如下例所示。我这里有两个问题:Asp.net客户端模板 -

  1. 我无法得到的,如果conditionwork在客户端模板
  2. 我怎样才能重新使用UL标签 模板三类 “列”的数据(COL1,COL2 ,col3 in example json)?

示例代码:

<style> 
    .sys-template { display:none; } 
    .list {width:220px; float:left; margin:0px 0px 0px 10px; background-color:#f2f2f2; } 
    </style> 

    <script src="MicrosoftAjax.debug.js" type="text/javascript"></script> 
    <script src="MicrosoftAjaxTemplates.debug.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     var listItems = [{ item: "item1", col: "col1" }, 
         { item: "item2", col: "col1" }, 
         { item: "item3", col: "col1" }, 
         { item: "item4", col: "col2" }, 
         { item: "item5", col: "col2" }, 
         { item: "item6", col: "col2" }, 
         { item: "item7", col: "col2" }, 
         { item: "item8", col: "col3" }, 
         { item: "item9", col: "col3" }, 
         { item: "item10", col: "col3" }] 
    </script> 
    </head> 

    <body xmlns:sys="javascript:Sys" xmlns:dataview="javascript:Sys.UI.DataView" sys:activate="*"> 
    <ul id="col1" class="list sys-template" sys:attach="dataview" dataview:data="{{ listItems }}"> 
     <!--* if (col=="col1") { *--> 
     <li>{{item}}</li> 
     <!--* } *--> 
    </ul> 
    <ul id="col2" class="list sys-template" sys:attach="dataview" dataview:data="{{ listItems }}"> 
     <!--* if (col=="col2") { *--> 
     <li>{{item}}</li> 
     <!--* } *--> 
    </ul> 
    <ul id="col3" class="list sys-template" sys:attach="dataview" dataview:data="{{ listItems }}"> 
     <!--* if (col=="col3") { *--> 
     <li>{{item}}</li> 
     <!--* } *--> 
    </ul> 
    </body> 

回答

0

像这样的东西应该工作 - 我只是在飞行中输入这个,所以原谅我,如果它不完美。

<ul id="template1" class="sys-template"> 
    <li code:if="col==$element.id">{{item}}</li> 
</ul> 

<ul id="col1" class="list sys-template" sys:attach="dataview" dataview:data="{{listItems }}" dataview:itemtemplate="template1"> 
</ul> 
<ul id="col2" class="list sys-template" sys:attach="dataview" dataview:data="{{listItems }}" dataview:itemtemplate="template1"> 
</ul> 
<ul id="col2" class="list sys-template" sys:attach="dataview" dataview:data="{{listItems }}" dataview:itemtemplate="template1"> 
</ul> 
+0

InfinitiestLoop, 这是我需要的,一个例子:)非常感谢。 在你的例子中只需要改变的事情是,模板的实际实现不应该有“sys-template”类,它的实际隐藏输出。所以我将它改为:

    working像一个魅力 – 2009-05-22 18:07:00

    0

    在预览4,您可以使用代码注入代码:之前和代码:属性,而不是注释代码块之后。

    也可以重新使用模板。实际上,框架会为您做到这一点:如果您将两个数据视图的模板属性指向同一个元素,则只会编译和使用一个模板。

    +0

    感谢您的快速回复伯特兰。 – 2009-05-22 18:05:04