ASP.NET - передача аргументов на сервер по нажатию кнопки - PullRequest
3 голосов
/ 12 января 2010

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

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

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

Пожалуйста, предложите.

ура

Ответы [ 4 ]

3 голосов
/ 12 января 2010

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

Если ваши чекбоксы являются элементами управления html, тогда поместите значения в скрытый элемент управления вводом html с помощью javascript, а затем получите доступ к этому значению в событии нажатия кнопки.

2 голосов
/ 12 января 2010

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

    foreach (var key in Request.Form.AllKeys)
    {
        if (key.EndsWith("checkbox", true, null))
        {
            // If entry found then this checkbox has been checked
        }
    }
1 голос
/ 12 января 2010

Поскольку вы собрали все идентификаторы jQuery, было бы лучше поместить все идентификаторы в массив, а затем присоединить массив, используя оператор конкатенации, например ';'. Сохраните это объединенное значение в скрытое текстовое поле <input type='hidden' id='txtHidIds' /> с установленным атрибутом runat="server". Затем получите значение этого скрытого поля из C #, используя

txtHidIds.Value

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

Что-то вроде

$("#btn1").click(function() {
    var arrChecked = new Array();

    $("input[type='checkbox'].childCheck:checked").each(function() {
        arrChecked.push($(this).attr("id"));
    });

    $("#txtHidIds").val(arrChecked.join(';'));
});
1 голос
/ 12 января 2010

Во-первых, я бы порекомендовал вам пересмотреть, почему вы пытаетесь выяснить, какие флажки выбраны на стороне клиента, и передать это в качестве аргумента в пост формы.Почему бы не перечислить их непосредственно в событии onclick кнопки?

Во-вторых, предполагая, что для этого есть какое-то конечное требование, я бы порекомендовал вам использовать jquery для обнаружения всех отмеченных флажков и сохранения их идентификаторов в строке с разделителями вскрытое поле формы.Я не уверен, почему вы вынуждены передавать эту информацию в качестве прямого аргумента самому событию нажатия кнопки, но делать это не рекомендуется.

Редактировать: элемент управления кнопки ASP.NET имеет свойство CommandArgumentВы можете использовать это для хранения, но не похоже, что это настраивается со стороны клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...