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

У меня есть массив списка флажков, который создается динамически, теперь я хочу получить выбранные значения списка флажков в цикле for, мой код ниже

protected void 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);
        }
    }

person Syed    schedule 14.04.2011    source источник


Ответы (1)


Вы должны объявить свой CheckBoxList cblWave как переменную класса:

CheckBoxList cblWave;

И затем в вашем PopulateWaveCheckBoxes вы должны создать и заполнить его:

private void PopulateWaveCheckBoxes(ArrayList items){
Label[] lbls = new Label[items.Count];
cblWave = new CheckBoxList[items.Count];
person Damb    schedule 14.04.2011
comment
Спасибо Dampe, но я уже объявил это как переменную класса. Я читал статью, чтобы сохранить значения списка флажков во время выполнения, это может быть через ViewState. Но проблема с ViewState в том, что он не допускает несериализуемых объектов. Поскольку CheckBoxList не является сериализуемым, теперь мне нужно пометить его как сериализуемый, но для этого, возможно, мне нужно создать еще один сериализуемый класс для списка флажков. Но я не уверен, как это сделать, или это единственный способ. - person Syed; 15.04.2011
comment
Используйте DynamicPlaceHolder denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx - person Syed; 07.09.2011