我正在尝试在中继器中执行此操作:
<%# Iif((int)DataBinder.Eval(Container.DataItem, "Id") == SelectedJobDefId, "blue", "red")%>
问题是成员属性仅在使用此语法时才评估:
<%= SelectedJobDefId %>
DataBinder.Eval() 仅在使用哈希符号时才有效。
作为测试,我尝试了这个:
<%= SelectedJobDefId %>
<%# DataBinder.Eval(Container.DataItem, "Id") + " " + SelectedJobDefId %>
当我切换行(LinkButton 事件)时,第一个 SelectedJobDefId 保持正确。DataBinder 部分对于每一行都是正确的。SelectedJobDefId 的第二个输出始终为“1”。
如何比较这两个值?
更新:
根据 Jeremy 的建议,我将 td 设置为服务器标签,并尝试在 OnItemDataBound 中执行如下逻辑:
protected void Repeater2_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
DataRowView drv = (DataRowView)item.DataItem;
int id = (int)drv.Row.ItemArray[0];
HtmlTableCell td = (HtmlTableCell)item.FindControl("failtd");
if (id == this.SelectedJobDefId){td.BgColor = "green";}
}
当我单步调试调试器时,OnItemDataBound 事件发生在更新 SelectedJobDefId 属性的 LinkButton 事件之前,该属性解释了默认值 1。
有没有办法切换事件的顺序?我可能只是采取了错误的方法。