#asp.net #dynamic #c#-4.0 #selecteditem #checkboxlist
#asp.net #динамический #c #-4.0 #выбранный элемент #список флажков
Вопрос:
У меня есть массив списка флажков, который создается динамически, теперь я хочу получить выбранные значения списка флажков в цикле for, мой код ниже
защищенная пустота OnbtnNext1_Click (отправитель объекта, EventArgs e) {
for (int i = 0; i < this.cbCountry.Items.Count; i )
{
if (cbCountry.Items[i].Selected)
{
itemsCountry.Add(cbCountry.Items[i].Value);
countCountry ;
}
}
PopulateWaveCheckBoxes(itemsCountry);
this.pnlWave.Visible = true;
}
private void PopulateWaveCheckBoxes(ArrayList items)
{
Label[] lbls = new Label[items.Count];
CheckBoxList cblWave = new CheckBoxList[items.Count];
for (int i = 0; i < items.Count; i )
{
lbls[i] = new Label();
lbls[i].Text = items[i].ToString();
cblWave[i] = new CheckBoxList();
cblWave[i].ID = "Checkbox" i.ToString();
cblWave[i].Items.Add(new ListItem("Wave 1"));
cblWave[i].Items.Add(new ListItem("Wave 2"));
cblWave[i].Items.Add(new ListItem("Wave 3"));
cblWave[i].Items.Add(new ListItem("Wave 4"));
this.pnlWave.Controls.Add(lbls[i]);
this.pnlWave.Controls.Add(cblWave[i]);
this.pnlWave.Controls.Add(new LiteralControl("<br>"));
}
}
protected void OnbtnNext2_Click(object sender, EventArgs e)
{
itemsWave = new ArrayList[countCountry];
for (int j = 0; j < countCountry; j )
{
itemsWave[j] = new ArrayList();
for (int i = 0; i < 4; i )
{
if (cblWave[j].Items[i].Selected) // Here i want to get the values
{
itemsWave[j].Add(cblWave[j].Items[i].Value);
}
}
PopulateColorCheckBoxes(itemsWave[j], j);
}
}
Ответ №1:
Вы должны объявить свой CheckBoxList cblWave
как переменную класса:
CheckBoxList cblWave;
И затем в вашем PopulateWaveCheckBoxes
вы должны создать экземпляр и заполнить его:
private void PopulateWaveCheckBoxes(ArrayList items){
Label[] lbls = new Label[items.Count];
cblWave = new CheckBoxList[items.Count];
Комментарии:
1. Спасибо, Дампе, но я уже объявил его как переменную класса. Я читал статью о сохранении значений списка флажков во время выполнения, это может быть через ViewState. Но проблема с ViewState заключается в том, что он не допускает несериализуемые объекты. Поскольку список флажков не является сериализуемым, теперь я должен пометить его как сериализуемый, но для этого, возможно, мне нужно создать другой сериализуемый класс для списка флажков. Но я не уверен, как это сделать, или это единственный способ.
2. Используйте DynamicPlaceHolder denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx