Asp.netでRepeaterコントロールを使用しています。
条件に基づいて、以前のインデックスプロパティ値を取得する必要があるシナリオがあります。
助けてください..
リピーターをデータバインドするときに DataSource が利用可能な場合、次のようなことができます。
例を示すためだけのデータソース定義:
protected DataTable Data
{
get
{
if (ViewState["Data"] == null)
{
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name");
table.Columns.Add("Color");
table.Columns.Add("Weight", typeof(int));
table.Rows.Add(1, "Ball", "Red", 10);
table.Rows.Add(2, "Table", "Black", 50);
table.Rows.Add(3, "Chair", "Green", 30);
ViewState["Data"] = table;
}
return (DataTable)ViewState["Data"];
}
}
ページの読み込み (リピーター DataBinding):
protected void Page_Load(object sender, EventArgs e)
{
rpt.DataSource = Data;
rpt.DataBind();
}
リピーターコード:
<asp:Repeater ID="rpt" runat="server">
<ItemTemplate>
<%#
Condition ? Data.Rows[Container.ItemIndex - 1]["Name"] : Eval("Name")
%>
</ItemTemplate>
</asp:Repeater>
Data
コード ビハインドで、DataTable である保護されたプロパティを参照します。