Как получить выбранное значение динамически созданного списка флажков в цикле for

#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