repeater中嵌套一个repeater

Posted on 2014-01-07 20:52  SCode  阅读(115)  评论(0)    收藏  举报

repeater内部的repeater在后台不能调用,在外层的repeater的有一个ItemDataBound事件,在这个事件中写代码 页面部分:

<asp:Repeater ID="Repeater1" runat="server"    onitemdatabound="Repeater1_ItemDataBound">

<HeaderTemplate>  

<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="black">    

  </HeaderTemplate>

<FooterTemplate>  

 </table>

</FooterTemplate>

<ItemTemplate>

<tr style=" background-color:White;">

  <td width="15%"><%# Eval("Name")%></td>  

<td width="85%">  

<asp:Repeater ID="Repeater2" runat="server">   

<HeaderTemplate>

<table width="100%" border="0" cellpadding="3" cellspacing="0">

  </HeaderTemplate>  

  <FooterTemplate>   

     </table>  

  </FooterTemplate>   

<ItemTemplate>  

  <tr style=" background-color:Yellow">    

<td width="20%"><%# Eval("StartDate", "{0:yyyy.MM.dd}")%></td>   

  <td width="20%"><%# Eval("EndDate", "{0:yyyy.MM.dd}")%></td> 

  <td width="40%"><%# Eval("Firm") %></td> 

    <td width="20%"><%# Eval("Depart")%></td>   

</tr>   

    </ItemTemplate>   

</asp:Repeater>

</td> 

</tr> 

  </ItemTemplate>

</asp:Repeater>

代码部分:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)   

  {         //每一行都要执行此方法       

      //行对象(e.Item)包括两部分:外观(e.Item.FindControl()),数据(e.Item.DataItem)        

     //ItemDataBound干三件事:取数据,找控件,改效果        

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)       

      {            

       Info data = (Info)e.Item.DataItem;           

        Repeater repeaterWork = (Repeater)e.Item.FindControl("Repeater2");

              repeaterWork.DataSource = data.Work;            

       repeaterWork.DataBind();        

       }

    }

 

---------------------解释 e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem ----------------- 1.(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) ----指触发对象的类型是DadaList里的基本行或是替换行(简单的说是DataList里的所有数据项内容)

2.e.Item.ItemType == ListItemType.Header -----指触发对象的类型是DadaList里的标题行的内容 进行判断以后,可以 对相应的数据对象进行操作ListItemType 枚举    [C#]请参见 System.Web.UI.WebControls 命名空间 | DataGridItem.ItemType | DataListItem.ItemType | RepeaterItem.ItemType 要求 命名空间: System.Web.UI.WebControls

全部显示

指定列表控件中项的类型 备注 ListItemType    枚举表示可以包含在列表控件中的不同项,例如 DataGridDataList 和 Repeater典型的列表控件由包含此枚举所表示的元素的单元格组成

成员 成员名称            说明 AlternatingItem    交替(从零开始的偶数索引)单元格中的项它是数据绑定的 EditItem     列表控件中当前处于编辑模式的项它是数据绑定的 Footer     列表控件的页脚它不是数据绑定的 Header     列表控件的页眉它不是数据绑定的 Item    列表控件中的项它是数据绑定的 Pager     页导航,显示定位到与 DataGrid 控件关联的不同页的控件它不是数据绑定的 SelectedItem     列表控件中的选定项它是数据绑定的 Separator    列表控件中项之间的分隔符它不是数据绑定的(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem) 是判断项是控件内容中的项或交插项 e.Item.ItemType == ListItemType.Header 是判断项是不是控件的表头

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3