からコマンドを呼び出すときに、リピータの項目のチェックボックスの値を取得するチェックボックスのリストをRepeaterコントロールを次があります:はフッター
<asp:Repeater ID="rptItemList" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<div>
<asp:CheckBox ID="chkItem" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ItemName").ToString() %>' />
<asp:HiddenField ID="hdItem" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "ItemId").ToString() %>' />
</div>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="lbtnDel" runat="server" Text="Delete" OnClick="lbtnDel_Click" OnClientClick="return confirm('Are you sure you want to delete selected items from this list?')"></asp:LinkButton>
</FooterTemplate>
</asp:Repeater>
とlbtnDel_Clickイベントを処理するコードを次のバックを:
protected void lbtnDel_Click(object sender, EventArgs e)
{
foreach (RepeaterItem ri in rptItemList.Items)
{
CheckBox chk = (CheckBox)ri.FindControl("chkItem");
HiddenField hd = (HiddenField)ri.FindControl("hdItem");
if (chk.Checked)
{
var tc = new ItemController();
tc.DeleteItem(Convert.ToInt32(hd.Value));
}
}
Response.Redirect(DotNetNuke.Common.Globals.NavigateURL());
}
私が選択した場合チェックボックスをオンにして[削除]をクリックすると、コードはチェックボックスを見つけますが、チェックボックスをオフにしてアイテムを削除しません。
アイデア?
1を参照してください。私は値を格納するためにリピータの隠しフィールドを使用することは考えていませんでした。もし私がもっと高く投票することができれば、私はそうするでしょう。 –