• Repeater控件的ItemDataBound事件


    Repeater控件的ItemDataBound事件:在项被绑定数据后触发。

    下面的例子来自msdn,不过我把前台和后台分开了。

    前台是:

    View Code
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <h1>Repeater控件的ItemDataBound事件</h1>
        <form id="form1" runat="server">
        <div>
    
        <asp:Repeater ID="repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
          
                <HeaderTemplate>  
                  <table border="1">         
                    <tr>
                        <td><b>Product</b></td>
                        <td><b>Consumer Rating</b></td>
                    </tr>           
                </HeaderTemplate>
    
                <ItemTemplate>    
                    <tr>
                        <td><asp:Label Text='<%#Eval("ProductID") %>' runat="server"></asp:Label></td>
                        <td><asp:Label Text='<%#Eval("Rating") %>' ID=RatingLabel runat="server"></asp:Label></td>
                    </tr>            
                </ItemTemplate>
    
                <FooterTemplate>
                 </table>             
                </FooterTemplate>
             
            
        
        </asp:Repeater>
       
         
        </div>
        </form>
    </body>
    </html>

    注意:table开始标签在<HeaderTemplate>中,结束标签在 <FooterTemplate>中。

    绑定数据Text='<%#Eval("ProductID") %>'需要加单引号,里面加双引号。

    后台是:

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Collections;
    
    namespace WebApplication2
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                ArrayList values = new ArrayList();
    
                values.Add(new Evaluation("Razor Wiper Blades", "Good"));
                values.Add(new Evaluation("Shoe-So-Soft Softening Polish", "Poor"));
                values.Add(new Evaluation("DynaSmile Dental Fixative", "Fair"));
    
                this.repeater1.DataSource = values;//指定数据源
                this.repeater1.DataBind(); //绑定数据            
            }
    
            protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                // This event is raised for the header, the footer, separators, and items.
                // Execute the following logic for Items and Alternating Items.
    
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    if (((Evaluation)e.Item.DataItem).Rating == "Good")
                    {
                        ((Label)e.Item.FindControl("RatingLabel")).Text = "<b>***Good***</b>";
                    }
                }
            }
    
            
        }
    
        public class Evaluation
        {
    
            private string productid;
            private string rating;
    
            public Evaluation(string productid, string rating)
            {
                this.productid = productid;
                this.rating = rating;
            }
    
            public string ProductID
            {
                get
                {
                    return productid;
                }
            }
    
            public string Rating
            {
                get
                {
                    return rating;
                }
            }
        }
    }

    该事件在 Repeater 控件中的某一项被数据绑定后但尚未呈现在页面上之前发生。

    运行结果:

      

    参见:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.repeater.itemdatabound(v=vs.80).aspx

     

    下面说一下RepeaterItemEventArgs,它为 Repeater 的 ItemCreated 和 ItemDataBound 事件提供数据。

    如果在 Repeter中有一个DropDownlist and Datalist ,然后你想根据DropDownlist的值设置Datalist的值,可以使用下面的方法来传值:

    protected void DDLSort2_OnSelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList dl = new DropDownList();
            dl = (DropDownList)sender;
            string sortdir = dl.SelectedValue.ToString();
            Control parent = dl.Parent;
            RepeaterItem rep = new RepeaterItem(0,ListItemType.Item);
            rep = (RepeaterItem)parent;
            RepeaterItemEventArgs e1=new RepeaterItemEventArgs(rep);
            BindInnerDatalist(sender,e1, sortdir);//另外写的方法。
        }

    参见:http://forums.asp.net/t/1707348.aspx/1

     

     

     

     

     

  • 相关阅读:
    演示使用string对象(续)
    P2216 [HAOI2007]理想的正方形 单调队列
    SP1805 HISTOGRA
    P4556 [Vani有约会]雨天的尾巴 树链剖分 线段树合并
    codeforces 600E 线段树合并
    HDU2197 本原串
    P3806 【模板】点分治1
    牛客10 Popping Balloons
    P3261 [JLOI2015]城池攻占 左偏树
    P4549 【模板】裴蜀定理
  • 原文地址:https://www.cnblogs.com/wang7/p/2716492.html
Copyright © 2020-2023  润新知