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

相关文章

hdu1254(嵌套bfs,两次bfs)

/*第一次做这种题感觉很有压力,思路还是有点混乱,总是wa,改了好多次才ac的思路:把箱子的移动当做第一层bfs,队列节点要用到当前箱子坐标(x,y),走的次数step,当前人的weizhi(man_x,man_y),要判断人能否将箱子推到某点时要嵌套第二层bfs(人的移动);代码如下:

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

SpringMVC入参绑定特别注意

1.直接在controller中定义一个变量,但是此种传输方式有一个限制就是参数名和请求中的参数名必须保持一致,否则失效。 @RequestMapping("test2")@ResponseBodypublic DBHackResponse<UserInfoVo> test2(String id , String name){UserInfoVo userInfoVo = new UserInf

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity