repeater嵌套Repeater绑定List泛型对象

2024-02-19 15:08

本文主要是介绍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();
     
    }

 


 

这篇关于repeater嵌套Repeater绑定List泛型对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725047

相关文章

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE