私はリピーターでこれをやろうとしています:
<%# Iif((int)DataBinder.Eval(Container.DataItem, "Id") == SelectedJobDefId, "blue", "red")%>
問題は、この構文が使用されている場合にのみメンバー プロパティが評価されることです。
<%= SelectedJobDefId %>
DataBinder.Eval() は、ハッシュ記号が使用されている場合にのみ機能します。
テストとして、私はこれを試しました:
<%= SelectedJobDefId %>
<%# DataBinder.Eval(Container.DataItem, "Id") + " " + SelectedJobDefId %>
行を切り替えても、最初の SelectedJobDefId は正しいままです (LinkButton イベント)。DataBinder 部分は各行で正しいです。SelectedJobDefId の 2 番目の出力は常に "1" です。
これら2つの値を比較するにはどうすればよいですか?
アップデート:
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";}
}
デバッガーをステップ実行すると、デフォルト値の 1 を説明する SelectedJobDefId プロパティを更新するLinkButton イベントの前に、OnItemDataBound イベントが発生しています。
イベントの順序を切り替える方法はありますか? 間違ったアプローチをしているだけかもしれません。