получить динамическое значение флажка при нажатии кнопки - PullRequest
1 голос
/ 10 августа 2011

У меня есть страница, где я динамически создаю 2 флажка.

 TableRow tr = new TableRow();
                    for (int i = 0; i < 2; i++)
                    {
                        TableCell Tc = new TableCell();


                            Tc.Attributes["style"] = "line-height: 30px; text-align: left";
                            Tc.Attributes["width"] = "50%";
                            Tc.Style.Add("padding-left", "5px");
                            //Checkboxes on left along with labels
                            CheckBox checkBoxCtrl = new CheckBox();
                            checkBoxCtrl.ID = "checkBoxCtrl" + i;
                            Tc.Controls.Add(checkBoxCtrl); 
                            tr.Cells.Add(Tc);                           
                    }

как только они созданы в событии загрузки страницы, у меня есть событие щелчка Ok_button, которое требует проверить, установлен флажок или нет.

 protected void Update2_Click(object sender, EventArgs e)
        {


         if(checkBoxCtrl.checked)
          //here i wont be able to get the value 
          // i get the error the name checkBoxCtrl does not exist..
          {
             response.write("true");
           }

        }

но как мне сделать проверку в этом случае.

спасибо

Ответ:

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

 protected void Update1_Click(object sender, EventArgs e)
    {
        for(int i = 0; i < ControlPropList.Count; i++)
        {              
            CheckBox chkTest = (CheckBox)xxx.FindControl("checkBoxCtrl" + i);
            {
                if (chkTest.Checked)
                {
                    Global.logger.Info("Checkbox True = " + chkTest.ID);
                }
                else
                {
                    Global.logger.Info("Checkbox False = " + chkTest.ID);
                }
            }
        }
    }

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Рассмотрите возможность сохранения динамического флажка в локальном члене:

    private CheckBox _myCustomCheckbox = new CheckBox();

    protected override void OnInit(EventArgs e)
    {
        TableRow tr = new TableRow();
        for (int i = 0; i < 2; i++)
        {
            TableCell Tc = new TableCell();

            if (i == 0)
            {
                Tc.Attributes["style"] = "line-height: 30px; text-align: left";
                Tc.Attributes["width"] = "50%";
                Tc.Style.Add("padding-left", "5px");
                //Checkboxes on left along with labels

                _myCustomCheckbox.ID = "checkBoxCtrl" + j;
                Tc.Controls.Add(_myCustomCheckbox);
                tr.Cells.Add(Tc);
            }
        }

        // the row needs added to a page control so that the child control states can be loaded 
        SomeTableOnThePage.Controls.Add(tr);

        base.OnInit(e);
    }

    protected void Update2_Click(object sender, EventArgs e)
    {
        if(_myCustomCheckbox.Checked)
        {
            response.write("true");
        }
    }
1 голос
/ 10 августа 2011

Это должно работать нормально, если вы добавите флажки на свою страницу в методе Page_PreInit.Если вы добавите их после этого (например, Page_Load), их значения не будут сохраняться.

Подробнее о жизненном цикле страницы asp.net читайте здесь:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

0 голосов
/ 28 ноября 2012

Может быть не совсем то, что вы хотите, но у меня была похожая проблема, у меня есть динамически сгенерированная таблица на странице ASP.NET с динамически генерируемыми флажками в одном столбце.Я создал данные для таблицы из коллекции, а затем, когда создаются динамические CB, я даю им идентификатор и сохраняю их во второй коллекции, например в массиве CB.

Поэтому, когда мне нужночтобы найти проверенное значение, я просто перебираю коллекцию и могу найти проверенные.

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

Очевидно, это предполагает, что динамическая таблица и CB были созданы с использованием некоторого цикла.

Возможно, это не лучшее решение, но оно подходит для моих текущих потребностей.

...