![](/img/trans.png)
[英]How to get all checked checkboxes in an asp:CheckBoxList inside an asp:Repeater
[英]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.