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

 

 

 

 

 

原文地址:https://www.cnblogs.com/wang7/p/2716492.html