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

相关文章

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin