web-dev-qa-db-ja.com

リピーターのすべてのチェックボックスの値を取得する

ユーザーが[変更を保存]ボタンをクリックすると、リピーター内のすべてのチェックボックスの値を取得する必要があります。値を取得できない場合は、IDも問題ありません。

マスターページコード:

<ul class="bulletless">
    <asp:Repeater runat="server" ID="newsletter_repeater">
        <ItemTemplate>
            <li><input type="checkbox" value='<%#Eval("id")%>' id='<%#Eval("id")%>'/> <%#Eval("displayTitle")%></li>
        </ItemTemplate>
     </asp:Repeater>
</ul>

<asp:Button runat="server" CssClass="editButtonOff" Text="Save Changes" ID="SaveNewsletterChanges" OnClick="SaveNewsletterChanges_submit" />

これが私の背後にあるコードです:

protected void SaveNewsletterChanges_submit(object sender, EventArgs e)
{
    //the count of the items in the repeater is 2
    //but the aItem is null
        foreach( RepeaterItem aItem in newsletter_repeater.Items){
        string myId = aItem.ID;
    }
}

私は何が間違っているのですか?

11
dmr

まず、チェックボックスにrunat="server"を追加する必要があります。

次に、チェックボックスに変更されないIDを割り当てる必要があります。リピーターは、クライアント側のIDを一意にする処理を行います:id="chkDisplayTitle"

第三に、次のようにリピーターのアイテムにアクセスします。

foreach (RepeaterItem item in CourseAreaRptr.Items)
        {
            HtmlInputCheckBox chkDisplayTitle = (HtmlInputCheckBox)item.FindControl("chkDisplayTitle");
            if (chkDisplayTitle.Checked)
            {
                //HERE IS YOUR VALUE: chkAddressSelected.Value
            }
        }
11
Shai Cohen