asp.net + C# - 格式化转发器中绑定的数据

时间:2010-05-13 17:53:41

标签: asp.net

我有一个ASP.NET页面,它有一个代码隐藏方法,定义如下:

public string GetStatusColor(int statusID)
{
  string color = "White";
  if (statusID == 3)
    color = "Red";
  else if (statusID == 2)
    color = "Blue";
  return color;
}

在我的ASP.NET页面中,我有一个Repeater,其定义如下:

<asp:Repeater ID="ticketRepeater" runat="server" OnLoad="ticketRepeater_Load">
  <HeaderTemplate>
    <table id="resultTable" cellpadding="0" cellspacing="0">    
      <tr>
        <th>Ticket #</th>
        <th>Status</th>
      </tr>
  </HeaderTemplate>
  <ItemTemplate>
    <tr>
       <td><%# DataBinder.Eval(Container.DataItem, "TicketID") %></td>
       <td><%# DataBinder.Eval(Container.DataItem, "TicketStatusID") %></td>
    </tr>
  </ItemTemplate>
  <FooterTemplate>
    </table>
  </FooterTemplate>
</asp:Repeater>

本质上,当绑定TicketStatusID时,我想回调GetStatusColor并显示方法的结果而不是实际的ID。我如何在中继器中执行此操作?谢谢!

2 个答案:

答案 0 :(得分:2)

页:

<td><%# GetStatusColor(Container.DataItem)%></td> 

代码隐藏:

public string GetStatusColor(object dataItem) 
{ 
  string color = "White";
  var ticket = dataItem as YourTicketClass;
  if(ticket != null)
  {
      if (ticket.TicketStatusID == 3) 
        color = "Red"; 
      else if (ticket.TicketStatusID == 2) 
        color = "Blue"; 
  }
  return color; 
} 

答案 1 :(得分:1)

简单地

<td><%# GetStatusColor(DataBinder.Eval(Container.DataItem, "TicketStatusID")) %></td>

如果TicketStatusID已经不是int,则需要进行转换或解析