2014-01-09 20 views
0

我在写一个停车场的程序;它接近完成,但我正在工作或报告,并且需要使数据变得简单可靠;为此我有一个中继器; DataBind事件后;我想使用'循环'将forecolors应用于内部中继器标签,该标签可以在数据绑定后保存某些文本结果;并显示使用DateTime.Now - 数据绑定标签中的日期计算的时间范围。我所使用的代码仅适用于中继器的第一个结果。需要在Repeater DataBind事件后运行一些代码

FIndAny是一个访问内部控件的小类;请忽略;只是帮助我了解我如何做这样的事情的示例代码。

下面是代码示例:

Repeater1.DataBind(); 
//int i=0; 
//Label dc = c; 
foreach (RepeaterItem t in Repeater1.Items) 
{ 
    ((Label)(FIndAny(Repeater1, "Label41"))).Text = 
     Convert.ToString((DateTime.Now - DateTime.Parse(((Label)(FIndAny(Repeater1, "Label9"))).Text)).TotalHours); 
}  

Label6.Text = "View Time trace below..."; 
Label lbl = ((Label)FIndAny(Repeater1, "Label11")); 

if (((Label)FIndAny(Repeater1, "Label13")).Text == "Parked" && (mdx.cardstatus.Where(x => x.CardNum == lbl.Text)).All(x => x.Status == 1)) 
{ 
    ((Panel)FIndAny(Repeater1, "Panel1")).BorderColor = System.Drawing.Color.Red; 
    ((Panel)FIndAny(Repeater1, "Panel1")).BorderStyle = BorderStyle.Solid; 
    ((Panel)FIndAny(Repeater1, "Panel1")).BorderWidth = 5; 
    ((Label)FIndAny(Repeater1, "Label13")).BackColor = System.Drawing.Color.Red; 
    ((Label)FIndAny(Repeater1, "Label13")).Font.Bold = true; 
    ((Label)FIndAny(Repeater1, "Label13")).ForeColor = System.Drawing.Color.White; 
} 

回答

0

您正在寻找Repeater.ItemDataBound Event,这Repeater控件中的某个项目后发生的数据绑定但在此之前它在网页上呈现。

Repeater1.ItemDataBound += new RepeaterItemEventHandler(Repeater1ItemDataBound); 
    Repeater1.DataBind(); 
} 

void Repeater1ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { 
     Label label13 = (Label)e.Item.FindControl("Label13"); 
     if (label13.Text == "Parked") { 
     //..... etc 
    } 
} 
0

试试这个aspx页面

<asp:Repeater OnItemDataBound="Repeater_ItemDataBound" ID="Repeater" runat="server"> 
    <ItemTemplate> 
     <asp:Label ID="MyLabel" runat="server" Text="Label"></asp:Label> 
    </ItemTemplate> 
</asp:Repeater> 

,然后在后台代码

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { 
     Label myLabel = e.Item.FindControl("MyLabel") as Label; 
     YourItemObject itemObject = e.Item.DataItem as YourItemObject; 
     myLabel.Text = itemObject.SomeAttribute; 
    } 
} 

希望它能帮助:)

相关问题