【问题标题】:Need to run some code after Repeater DataBind event需要在Repeater DataBind 事件之后运行一些代码
【发布时间】:2014-01-10 00:49:44
【问题描述】:

我正在为停车场编写一个程序;它接近完成,但我正在工作或报告,需要使数据变得简单可靠;为此,我有一个中继器;在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;
}

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

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

    希望对你有帮助:)

    【讨论】:

      【解决方案2】:

      您正在寻找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
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-15
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        相关资源
        最近更新 更多