как читать динамические флажки без использования атрибута id элемента управления checkbox в ASP.NET ?

#asp.net #webforms

#asp.net #веб-формы

Вопрос:

У меня есть веб-приложение, в котором я динамически генерирую и отображаю флажки во время выполнения. Каждый флажок соответствует элементу. Мне нужно найти, какие элементы выбраны. Однако я не могу установить идентификатор элемента в атрибуте ID элемента управления Checkbox при создании элемента управления, поскольку один и тот же элемент может отображаться несколько раз на веб-странице.Атрибут ID позволяет мне использовать страницу.Метод Form (), но теперь я не могу использовать. Пожалуйста, предложите альтернативный метод определения того, какие флажки установлены.

Комментарии:

1. Что вы подразумеваете под «динамически генерирующим»? Вы создаете список флажков в коде на стороне сервера, или флажок создается событием? В любом случае, ваш серверный код должен позволять вам устанавливать ID свойство вашего флажка, поэтому я бы установил для него что-то вроде checkboxN где N — положительное целое число, которое увеличивается с каждым новым идентификатором. Таким образом, вы можете получить конкретный флажок, не зная его значения.

2. Как они динамически генерируются .. в коротком коде, пожалуйста

Ответ №1:

Если вы используете JQUERY, вы можете назначить общий класс каждому флажку, а затем использовать «селектор классов», чтобы получить массив элементов на странице, которые все имеют один и тот же класс. С помощью этого вы можете выполнить итерацию по массиву и определить, какие элементы были проверены. Соответствующий код будет выглядеть примерно так:

 <head>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function findCheckedBoxes() {
            var AllBoxes = $(".productCheckBox");
            for(i=0;i<AllBoxes.length; i  )
            {
                if(AllBoxes[i].checked)
                {
                    //do something with it...
                    alert(AllBoxes[i].value);
                }
                }
        }

    </script>
</head>
<body>
    <form id="form1" runat="server" onsubmit="return validatefields();">
    <input id="Checkbox1" type="checkbox" class="productCheckBox" value="one" />One<br />
    <input id="Checkbox2" type="checkbox" class="productCheckBox" value="two" />Two<br />
    <input id="Checkbox3" type="checkbox" class="productCheckBox" value="three" />Three<br />
    <input id="Checkbox4" type="checkbox" class="productCheckBox" value="four" />Four<br />
    <input id="Button2" type="button" value="button" onclick="findCheckedBoxes()" />
    </form>
</body>
</html>
  

Комментарии:

1. 1 для вашего веб-сайта … лучшее развлечение, которое у меня было за долгое время 😉

2. Извините, у меня нет никаких знаний о Jquery. Я искал ASP.net решение. В любом случае спасибо!

3. @vjain27, тебе действительно нужно добавить jquery в свой toolbox. Это работает на клиенте, где ASP.NET в основном это технология на стороне сервера.

4. @vjain27 интересно, как бы вы добились своего asp.net решение без идентификатора

5. @Cos Callis — Но с помощью jquery, как я смогу прочитать флажки на стороне сервера?