当前位置:  开发笔记 > 后端 > 正文

ASP.NET:如何更改<asp:repeater>中每行使用的itemTemplate?

如何解决《ASP.NET:如何更改<asp:repeater>中每行使用的itemTemplate?》经验,为你挑选了1个好方法。

现有代码使用an asp:repeater来构建HTML表.(强调现有设计).这是生成表的一些部分伪代码:



   
      
      
         
      
Date Type Action
<%# GetTextForThis((MyItem)Container.DataItem) %> <%# GetTextForThat((MyItem)Container.DataItem) %> <%# GetTextForTheOther((MyItem)Container.DataItem) %>

但现在需要(某些)项目以不同方式显示,并且需要使用a来完成COLSPAN=3,并且整个项目将是一个单元格:

   
      
         
            
         
      
   

鉴于:

该页面使用转发器来构建HTML表

设计需要一些表行来跨列

我怎样才能做到这一点?

希望有类似的东西:

   
      
         <%# GetTextForThis((MyItem)Container.DataItem) %>
         <%# GetTextForThat((MyItem)Container.DataItem) %>
         <%# GetTextForTheOther((MyItem)Container.DataItem) %>
      
   


   
      
         
            
         
      
   

并以某种方式神奇地能够让OnDataBind事件告诉转发器使用哪个模板.这可能吗?

回答

虽然两个答案都是正确的,但我宁愿使用第一个建议; 这涉及在aspx文件中显示代码,而不是在代码隐藏中手动构建HTML.(我不想再次在代码中构建HTML)

   
      
         
            <%# GetTextForThis((MyItem)Container.DataItem) %>
            <%# GetTextForThat((MyItem)Container.DataItem) %>
            <%# GetTextForTheOther((MyItem)Container.DataItem) %>
         
      

      
         
            
               
            
         
   

并在代码隐藏中:

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   // if the data bound item is an item or alternating item (not the header etc)
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      // get the associated object
      Object item = .Item.DataItem;
      if (item == null)
         return;

      Control thing1 = e.Item.FindControl("thing1");
      Control thing2 = e.Item.FindControl("thing2");

      if (item is MyClassThatICreated)
      {
         thing1.Visible = false;
         thing2.Visible = true;
      }
      else
      {
         thing1.Visible = true;
         thing2.Visible = false;
      }
      ...
}

FlySwat.. 6

在项目模板中放置两个ASP:占位符控件.在代码隐藏中,在ItemDataBound事件上,确定要显示的样式,并隐藏一个占位符.



1> FlySwat..:

在项目模板中放置两个ASP:占位符控件.在代码隐藏中,在ItemDataBound事件上,确定要显示的样式,并隐藏一个占位符.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有