簡體   English   中英

讀取Repeater內CheckBoxList的選中項

[英]Read checked items of CheckBoxList inside Repeater

可能是一個愚蠢的問題,但我需要一些有關發布表單時如何在直放站中讀取復選框值的幫助。 我有一個表單,在此表單中,我有一個Repeater,在每個ItemTemplate中,我都有一個CheckBoxList。 這是我的代碼有點簡化:

<form method="post">
    <asp:Repeater runat="server" ID="FormInputValues">
        <ItemTemplate>
            <asp:CheckBoxList runat="server" ID="CheckBoxValues"
                DataSource='<%# ((FormOptions)Container.DataItem).Options %>' />
        </ItemTemplate>
    </asp:Repeater>
    <br />
    <asp:LinkButton ID="SelectorNext" CssClass="button" OnClick="SelectorNext_Click"
        Text="Next" runat="server" />
</form>

我的問題是我需要能夠將每個CheckBoxList中的所有選中項及其相關的數據項進行映射。 像這樣:

Dictionary<"DataItem.ID", List<"CheckBox.Value">>

我找不到解決此問題的好方法,因此,如果有人提出任何建議,我將不勝感激!

嘗試使用代碼:

for(int i = 0; i < FormInputValues.Items.Count; i++)
{
 CheckBoxList chklist = (CheckBoxList)FormInputValues.Items[i].FindControl("CheckBoxValues");
}

您將在chklist對象中獲得每個CheckBoxList ,您可以遍歷它以獲取選定的復選框。

您可以像下面的代碼那樣遍歷CheckBoxList

foreach (ListItem listItem in clbIncludes.Items)
{
    if (listItem.Selected) { 
    //do some work 
}
    else { 
    //do something else 
    }
}

其中clbIncludes是一個CheckBoxList

您可以在for循環內使用foreach循環來實現所需的功能。

嘗試這個:

Protected function repeater1_ItemCreated(Object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
      CheckBoxList checkBoxValues = (CheckBoxList)e.Item.FindControl("CheckBoxValues");
      String selectedValue = checkBoxValues.SelectedValue;
      //Do your stuff ...
    }
}

ItemCreated事件是您需要的事件,您可以在其中更改每個轉發器項目的外觀。

另一個答案也是正確的,但是此示例的性能更高,因為您不需要循環瀏覽所有重復器項目,也不需要循環遍歷CheckBoxList每個復選框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM