我的项目使用三层做的,网上的代码我都看不懂啊请大家帮帮我啊!
this.Repeater1.DataSource=PlateManager.GetPlateAllBytid(1); //Repeater1的数据源是一个Ilist<plate>的集合,网上的好像用的都是dataset
this.Repeater2.DataSource=PlateManager.GetPlateByPid(p.id); //Repeater2的数据源是一个Ilist<plate>的集合,里边的参数是plate实体类里边的id属性;就是这样啦怎么样才能把Repeater2嵌套在Repeater1里边啊数据源就用这两个,我在线等回答谢谢大家了!

解决方案 »

  1.   


            protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    Repeater Repeater2= (Repeater)e.Item.FindControl("Repeater2");
                    if (Repeater2!= null)
                    {
                        string id = ((DataRowView)e.Item.DataItem).Row["Order_ID"].ToString();// Order_ID改成你plate 的id
                        Repeater2.DataSource = PlateManager.GetPlateByPid(p.id);             Repeater2.DataBind();
                    }            }
            }
      

  2.   

    protected void rptTop_ItemDataBound(object sender, RepeaterItemEventArgs e)
      {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
      Repeater rpt = (Repeater)e.Item.FindControl("rptchild");
      T t= (T)e.Item.DataItem;  }
        
      }

    <asp:Repeater ID="rptchild" runat="server"  DataSource='<%#Getdata(Eval("id")) %>' >
    public List<T> rptchild(object o)
    {...
      

  3.   

    Repeater嵌套绑定Repeater 
      

  4.   

    DataRowView用这个不行啊因为我Repeater1里边的数据源是IList<plate>的泛型集合,所以e.Item.DataItem的类型是object类型的不能强制转换成DataRowView,谁能告诉我Repeater1改用什么数据源啊
      

  5.   

    4楼的我用T t= (T)e.Item.DataItem;
    可是那个t里边根本获取不到里边的属性。没有t.id这个属性啊
      

  6.   

    我做的个商品二级分类
    前台:
    <asp:Repeater ID="repBig" runat="server">
      <ItemTemplate>
      <ul>
      <li>
      <img src="images/news_dian.gif" />&nbsp;&nbsp;<%#Eval("name") %></li>
      <asp:Repeater ID="repSmall" runat="server" DataSource='<%#Bind("list") %>'>
      <ItemTemplate>
      <li id="tree"><a href='SearchResult.aspx?sid=<%#Eval("id") %>'>
      <%#Eval("name") %></a></li>
      </ItemTemplate>
      </asp:Repeater>
      </ul>
      </ItemTemplate>
    </asp:Repeater>
    后台:  protected void Page_Load(object sender, EventArgs e)
      {
      if (!IsPostBack)
      {
      DisplaySortBig();//显示产品大类别
      }
      }
      /// <summary>
      /// 绑定产品大类信息
      /// </summary>
      private void DisplaySortBig()
      {
      repBig.DataSource = SortBigManager.GetAllSortBig();
      repBig.DataBind();
      }
    商品大类实体类  private int id;
      /// <summary>
      /// id
      /// </summary>
      public int Id
      {
      get { return id; }
      set { id = value; }
      }
      private string name;
      /// <summary>
      /// 类别名称
      /// </summary>
      public string Name
      {
      get { return name; }
      set { name = value; }
      }
      private List<SortSmall> list;
    /// <summary>
    /// 商品小类
    /// </summary>
    public List<SortSmall> List
    {
    get { return list; }
    set { list = value; }
    }数据访问类
      /// <summary>
      /// 查询所有商品大类别信息
      /// </summary>
      /// <returns></returns>
      public static List<SortBig> GetAllSortBig()
      {
      string sql = "select * from sortBig";
      List<SortBig> sortBigList = new List<SortBig>();
      DataTable dt = DbHelperSQL.GetDataSet(sql, null);
      foreach (DataRow row in dt.Rows)
      {
      SortBig sortBig = new SortBig();
      sortBig.Id = (int)row["id"];
      sortBig.Name = (string)row["name"];
      sortBig.List=SortSmallService.GetSortBigById((int)row["id"]); //这个方法是根据id查询商品小类的详细信息   
      sortBigList.Add(sortBig);
      }
      return sortBigList;
      }
      

  7.   

    html页面 <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
           <ItemTemplate>
           <%#Eval("部门名称")%>|
          <asp:Repeater ID="Repeater2" runat="server">
                 <ItemTemplate>
                 <%#Eval("人员姓名")%>
                 </ItemTemplate>
           </asp:Repeater>
           </ItemTemplate>
    </asp:Repeater>
    测试页面:protected void Page_Load(object sender, EventArgs e)
        {
       //查询数据并把查询结果附值给DataTable
        DataTable dt=自已写代码;
        Repeater1.DataSource=dt;
        Repeater1.DataBind();
       }
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
               Repeater rp=(Repeater)e.Item.FindControl("Repeater2");
               string id=DataBinder.Eval(e.Item.DataItem,"id").ToString();  //取得部门id
               //根据当前部门的id从人员表中查找员工的数据查询并附值给一个DataTable dt           rp.DataSource=dt;
               rp.DataBind(); 
            }   }
      

  8.   

    <table>
                    <asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound">
                        <ItemTemplate>
                            <tr style="background-color: ThreeDShadow;">
                                <td>
                                    <input id="txtID" type="text" value='<%#Eval("Id")%>' runat="server" visible="false" />
                                    <b>
                                        <%#Eval("Title")%>
                                    </b>
                                </td>
                                <td>
                                    <%#Eval("PubDate")%>
                                </td>
                                <td>
                                    <%#Eval("Clicks")%>
                                </td>
                            </tr>
                            <tr>
                                <td colspan="3">
                                    <table id="askTop" style="margin-left: 10px;" width="100%">
                                        <asp:Repeater runat="server" ID="rpquestionlist">
                                            <ItemTemplate>
                                                <tr>
                                                    <td>
                                                        <%#Eval("AuthorName")%>
                                                    </td>
                                                    <td>
                                                        <%#Eval("Contents")%>
                                                    </td>
                                                    <td>
                                                        <%#Eval("CommentPubDate")%>
                                                    </td>
                                                </tr>
                                            </ItemTemplate>
                                        </asp:Repeater>
                                    </table>
                                </td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </table>  private void RpTypeBind(int uid)
        {
            this.rptypelist.DataSource = ArticlesManager.GetUserAllArticles(uid);
            this.rptypelist.DataBind();
        }    protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;
                //HtmlInputText txtID = (HtmlInputText)e.Item.FindControl("txtID");
                //int articleId = Convert.ToInt32(txtID.Value);
                Articles rowv = (Articles)e.Item.DataItem;
                int articleId = rowv.Id;
                rep.DataSource = CommentsManager.CommentsByArticel(articleId);
                rep.DataBind();
            }
        }
    我用了二种方法,可以用隐藏域<input id="txtID" type="text" value='<%#Eval("Id")%>' runat="server" visible="false" />
    再用HtmlInputText txtID = (HtmlInputText)e.Item.FindControl("txtID");
     int articleId = Convert.ToInt32(txtID.Value);
    第二种就是用 Articles rowv = (Articles)e.Item.DataItem;
                int articleId = rowv.Id;