zoukankan      html  css  js  c++  java
  • Repeater使用技巧

    一、在ItemDataBound事件里面动态改变Repeater控件里面的html元素
    
    如:
    
            <asp:Repeater ID="Repeater1" runat="server" 
                onitemdatabound="Repeater1_ItemDataBound">
                <ItemTemplate>
                    <table>
                        <tr id="row" runat="server">
                            <td>
                                <%#DataBinder.Eval(Container.DataItem,"title")%>
                            </td>
                        </tr>
    
                        <tr id="row2" runat="server">
                            <td>
                             </td>
                        </tr>
                    </table>
                </ItemTemplate>
            </asp:Repeater>
    
    后台程序
        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            int i = e.Item.ItemIndex;
            if (i % 2 == 0)
            {
                HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("row");
                if (row != null)
                {
                    row.BgColor = System.Drawing.Color.Black.ToString();
                }
            }
    
            HtmlTableRow row2 = (HtmlTableRow)e.Item.FindControl("row2");
            if (row2 != null)
            {
                 //在这里就可以对row2这个html的元素进行各种各样的赋值了
             }
        }
    
     
    
    二、在Repeater控件里面嵌套Repeater控件
        <asp:Repeater runat="server" ID="rp1" OnItemDataBound="rp1_ItemDataBound">
            <ItemTemplate>
                <tr>
                    <td  >
                         <%#DataBinder.Eval(Container.DataItem,"title")%>
                    </td>
                </tr>
                <tr>
                    <td>
                        <div  >
                            <asp:Repeater runat="server" ID="rp1">
                                <ItemTemplate>
    
                                    <%#DataBinder.Eval(Container.DataItem,"title2")%>
                                  </ItemTemplate>
                            </asp:Repeater>
                        </div>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    
     
    
    CS代码
    
            private void Bind()
            {  ……
                this.rptypelist.DataSource = dt;
                this.rptypelist.DataBind();
            }
            protected void rp1_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("rp2") as Repeater;//找到里层的repeater对象
                    DataRowView rowv = (DataRowView)e.Item.DataItem;//找到外层Repeater关联的数据项 
                    int title= Convert.ToInt32(rowv["title"]); 
    
                   ……
                    rep.DataSource = dt2;
    
                    rep.DataBind();
                }
            }
    
     
    
    三、添加序号的4种方法
    
    1、<itemtemplate>
    <tr><td>
    <%# Container.ItemIndex + 1%>
    </td></tr>
    </itemtemplate> 
    2、<itemtemplate>
    <tr><td>
    <%# this.rpResult.Items.Count + 1%>
    </td></tr>
    </itemtemplate>
    
    3、在<form></form>中添加<Label ID="dd" ></Label>
    
    <body nload="show()">
    
    <Script. Language="JScript">
          function show()
       {
    var bj = document.all.tags("LABEL");
    for (i=0;i<obj.length;i++)
    {
    document.all["dd"][i].innerHTML=i+1;
    }
       }
       </script>
    
    4、后台实现方法
    后台实现方法:
    
    在.aspx里添加<asp:Label id="Label1" Runat="server"></asp:Label>
    
    在.cs里添加
    
    ** void InitializeComponent()
    {    
       this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
       this.Load += new System.EventHandler(this.Page_Load);
    
    }
    
    ** void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
       {
        ((Label)e.Item.FindControl("Label1")).Text = Convert.ToString(e.Item.ItemIndex + 1);
       }
    }
    
    四、获取每行的指定字段的值
    
    
    用一个Label 控件来保存id 值,然后在后台可以通过获取这个Label来获取id
    例如:
    <asp:repeater runat="server" id="rpList"  OnItemDataBound="Repeater1_ItemDataBound">
    <ItemTemplate>
           <tr>    
              <td > 
                 <asp:Label ID="lblPID" runat="server" Text="<%#Eval("id")%>" ></asp:Label>      
             </td>          
           </tr> 
         </ItemTemplate>
    </asp:repeater> 
     
    cs文件里:
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
      {
                foreach (RepeaterItem re in Repeater1.Items)
                {
                    Label l = re.FindControl("lblPID") as Label; //这里写你的Label的ID
                }
    }
  • 相关阅读:
    工作流系统中的语法标记系统
    通用附件管理功能改善
    规范数据库表字段大小写 小写字段名全部更改为大写
    Enterprise Solution 虚拟测试环境
    解析大型.NET ERP系统 查找与钻取
    Linux:FHS标准
    Linux:修改和删除已有变量
    分布式系统:高性能系统设计原则
    CAP:Alantany 谈 CAP
    Javascript:自己写模板引擎
  • 原文地址:https://www.cnblogs.com/beeone/p/3597632.html
Copyright © 2011-2022 走看看