repeater嵌套Repeater綁定List泛型對象

之前在網上找Repeater嵌套,大多都是綁定的DATASET或者是datatable,很少有綁定List泛型對象。爲啦找到解決辦法,苦悶啦好一陣子。現在解決啦,和大家分享一下。

這是嵌套運行效果

1111

這是前臺頁面

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <div class="main">
        <div class="container">
            <div class="containerheader">
                <div class="headleft">
                    <p>
                        單頁/海報
                    </p>
                </div>
                <div class="headright">
                </div>
            </div>
            <div class="sidebar">
                <uc:Sidebar ID="Sidebar" runat="server" />
            </div>
            <div class="content">
                <div class="contenttop">
                 <div id="Main">
                    <div class="contenttop">
                        <ul>
                            <li>
                        <%--    成品尺寸等的repeater--%>
                                <asp:Repeater ID="reProductpartItemList" runat="server">
                                    <ItemTemplate>
                                        <p>
                                            <a><span>
                                                <%#((DscyModel.ProductPartParameter)Container.DataItem).ParameterName%></span></a>
                                            <img src="../b_Images/help.png" alt="help" title="" rel="Tooltip" /></p>
                                    </ItemTemplate>
                                </asp:Repeater>
                                <p>
                                    <a><span>工藝類型</span></a><img src="../b_Images/help.png" alt="help" title="工藝類型" rel="Tooltip" />
                                </p>
                            </li>
                        </ul>
                    </div>
                    <div class="clear">
                    </div>
                    <div class="autodiv">
                    </div>
                    <div class="contentmain">
                   <%-- 通過repeater嵌套,顯示成品尺寸,p面下的具體大小等--%>
                        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" OnItemCreated="Repeater1_ItemCreated">
                            <ItemTemplate>
                                <div class="attribute_list">
                                   
                                    <asp:Repeater ID="Repeater2" runat="server">
                                        <ItemTemplate>
                                       
                                    <div class="attribute_list_option">
                                        <a href="javascript:void(0)">
                                            <%# DataBinder.Eval(Container.DataItem, "ItemName") %>
                                            <%-- <%#((DscyModel.ProductPartParameter)Container.DataItem).ParameterName%>--%>
                                        </a>
                                    </div>
                                       </ItemTemplate>
                                    </asp:Repeater> 
                                </div>
                            </ItemTemplate>
                        </asp:Repeater>
                        <div class="attribute_list">
                      <%-- 顯示 工藝類型的具體內容--%>
                            <asp:Repeater ID="reProductpartprocess" runat="server">
                                <ItemTemplate>
                                    <div class="attribute_list_option">
                                        <a href="javascript:void(0)">
                                            <%# DataBinder.Eval(Container.DataItem, "ProcessName")%></a>
                                    </div>
                                </ItemTemplate>
                            </asp:Repeater>
                        </div>
                    </div>
                </div>
            </div>
            <div class="clear">
            </div>
        </div>
        <div class="clear">
        </div>
        <div class="soliddiv">
        </div>
     </div>
</asp:Content>

這是後臺的代碼

int prodcutid = 0;//這個全局變量的id是定義好的。直接通過頁面傳值的
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
             prodcutid = Convert.ToInt32(Request["ProId"]);

            
            //部件參數(成品尺寸,P面)的repeater
            gProductpartparamsList(prodcutid);
            //部件子表(成品尺寸的高寬等)
            gProductpartItemList(prodcutid);
            //部件工藝類型
           gProductpartprocessList(prodcutid);

           GetPartProcessFromInfo(prodcutid);
        }
    }
    /// <summary>
    /// 查看主表信息的時候,部件表 工藝表對應的信息都需要顯示
    /// </summary>
    /// <param name="prodcutid"></param>

    private void GetPartProcessFromInfo(int prodcutid)
    {

        List<ProductPartParameter> productpart = (new ProductInFoBLL()).GetProductPartParmList(prodcutid);

        reProductpartItemList.DataSource = productpart;
        reProductpartItemList.DataBind();

 

   
    }

  

  
    /// <summary>
    ///    取對應產品部件的元素(部件參數,eg:成品尺寸,p/面)
    /// </summary>
    /// <param name="partItemId"></param>
    /// <returns></returns>
    public void  gProductpartparamsList(int partItemId)
    {
        //通過調用GetProductPartParmList方法,deng
        List<ProductPartParameter> productpart = (new ProductInFoBLL()).GetProductPartParmList(partItemId);

        reProductpartItemList.DataSource = productpart;
        reProductpartItemList.DataBind();
     
    }
   
    /// <summary>
    /// 取對應產品部件的元素(部件參數,eg:成品尺寸的長寬高)
    /// </summary>
    /// <param name="partId"></param>
    public void gProductpartItemList(int partId)
    {
        List<ProductPartParameter> productpart = (new ProductInFoBLL()).GetProductPartParmList(prodcutid);
        Repeater1.DataSource = productpart;
        Repeater1.DataBind();
    }
  
    /// <summary>
    /// 這個事件是當repeater綁定一列後執行一次,綁定一列執行一次
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        //判斷裏層repeater處於外層repeater的哪個位置( AlternatingItemTemplate,FooterTemplate,
        //HeaderTemplate,,ItemTemplate,SeparatorTemplate)
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater rep = e.Item.FindControl("Repeater2") as Repeater;//找到裏層的repeater對象
            ProductPartParameter Idparam = (ProductPartParameter)e.Item.DataItem;
            int typeid = Convert.ToInt32(Idparam.ID_Parameter);
            List<ProductPartParameterItem> productpartParaItem = (new ProductInFoBLL()).GetProductPartItemList01(prodcutid, typeid);
            rep.DataSource = productpartParaItem;
            rep.DataBind();
        }
    }
    /// <summary>
    /// 在r1的ItemCreated事件中註冊一下r2
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        Repeater rep = e.Item.FindControl("Repeater2") as Repeater; 
    }

    //取對應部件工藝可選參數列表
    public void gProductpartprocessList(int partId)
    {
       
        List<ProductPartProcess> productpartprocess = (new ProductInFoBLL()).GetProductPartItemProcessList(partId);

        reProductpartprocess.DataSource = productpartprocess;
        reProductpartprocess.DataBind();
     
    }

 


 

發佈了32 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章