如何用 ItemDataBound 事件,给嵌套在 Repeater1 中的 Repeater2 绑定数据???

解决方案 »

  1.   

    something like
    void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
         {          if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
              {
                 Repeater rp = (Repeater)e.Item.FindControl("childRepeater");
         rp.DataSource = ...;
         rp.DataBind();
              }
           }
    <asp:repeater id="parentRepeater" runat="server" ItemDataBound="R1_ItemDataBound">
       <itemtemplate>
         
          <asp:repeater id="childRepeater" runat="server">         <itemtemplate>
              .....
             </itemtemplate>
          </asp:repeater>
        
       </itemtemplate>
    </asp:repeater>
      

  2.   

    若为父子关系也可参考孟子的文章
    http://dotnet.aspx.cc/ShowDetail.aspx?id=54F4C732-AAE2-4135-FB1B-7B4B613BAA33
      

  3.   

    父子关系,可以用ItemDataBound 事件不?怎么老是不成啊??
      

  4.   

    yeshttp://support.microsoft.com/default.aspx?scid=kb;EN-US;306154http://www.c-sharpcorner.com/Code/2002/Aug/MasterDetailedDisplay.asp
      

  5.   

    有没有用ItemDataBound 事件的例子?? 不要用DataSet  !
      

  6.   

    有没有父子关系用ItemDataBound 事件的例子?? 不要用DataSet  ! 
      

  7.   

    >> 不要用DataSet what are you using?
      

  8.   

    to 思归,不用DataSet,可以使用实体类的集合,同样可以实现离线浏览。
    实例如下:
    Model层
    public class AccountModel
    {
        private string username;
        private string password;    public string UserName
        {
            get
            {
               return username;
            }
            set
            {
                username = value;
            }
        }    public string Password
        {
            get
            {
               return password;
            }
            set
            {
                password= value;
            }
        }
    }
    DataAccess层
    从数据库获取数据
    public IList GetAccounts()
    {
         IList accounts = new ArrayList();
         using(rdr)
         {
            Account account = new Account();
            赋值------
            accounts.Add(account);
         }
         return accounts;
    }WebUI层
    <%@ Import Namespace="Model层dll命名空间" %><asp:Repeater id="parent" runat="server" OnItemDataBound="parent_ItemDataBound">
       <ItemTemplate>
           <asp:Label id="lblUserName" runat="server" Text="<%# ((AccountModel)Container.DataItem).UserName %>" />
           <asp:Repeater id="child" runat="server">
               <ItemTemplate>
                    <asp:Label id="lblUser" runat="server" Text="<%# ((AccountModel)Container.DataItem).UserName %>" />
               </ItemTemplate>
           </asp:Repeater>
       </ItemTemplate>
    </asp:Repeater>后台:
    在Page_Load事件中绑定parent控件值protected void parent_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if(e.Item.ItemIndex > -1)
        {
            获取父Repeater的数据项
            AccountModel accountModel = (AccountModel)e.Item.DataItem;
            string userName = accountModel.UserName;        查找子Repeater控件
            Repeater child = (Repeater)e.Item.FindControl("child");
            
            根据用户名获取子Repeater控件数据
            IList dataSource = GetAccounts(userName);
            
            绑定子控件
            child.DataSource = dataSource;
            child.DataBind();
        }
    }
    注:此法的效率不高,在并发用户少,数据量不大的情况下,可以使用