簡體   English   中英

需要在Repeater DataBind事件之后運行一些代碼

[英]Need to run some code after Repeater DataBind event

我正在為停車場寫一個程序; 它已接近完成,但我正在工作或報告,需要使數據簡單可靠; 為此,我有一個中繼器; DataBind事件之后; 我想使用'循環'將前色素應用於內部轉發器標簽,該標簽在數據綁定后保存某些文本結果; 以及顯示使用DateTime.Now計算的時間跨度 - 數據綁定標簽中的日期。 我的代碼僅適用於轉發器中的第一個結果。

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;
}

您正在尋找Repeater.ItemDataBound事件 ,它發生在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
    }
}

在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;
    }
}

希望能幫助到你 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM