триггер обновления asp.net из нескольких элементов управления в gridview - PullRequest
2 голосов
/ 08 марта 2011

У меня есть сетка с несколькими флажками, иногда 40+. Я хочу, чтобы флажки вызывали функцию .net в коде позади при нажатии. Обычно это было бы просто, если бы флажки находились за пределами вида сетки. Но поскольку они находятся в таблице, и я не знаю, сколько их, я не знаю их идентификаторы до времени выполнения.

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

AFAIK Мой единственный вариант - получить идентификаторы элементов управления (флажки) перед загрузкой страницы и затем программно добавить их в триггерную часть панели обновления. Есть ли другой способ сказать «если какие-либо флажки нажаты, запустите это»?

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

Используйте CSS-селектор для флажков и вызовите __doPostBack, чтобы обновить панель, например. назначьте CSS-класс checkboxes каждому флажку, затем добавьте скрипт:

$('#checkboxes').change(function() {
  __doPostBack('<%=UpdatePanel1.UniqueID%>');
}

если вас интересует идентификатор флажка, вызвавшего обновление, вы можете передать его обратно к коду:

$('#checkboxes').change(function() {
  __doPostBack('<%=UpdatePanel1.UniqueID%>',$(this).attr('id'));
}

2-й параметр будет доступен как Request.Form["__EVENTARGUMENT"]. Вы можете поместить здесь все, что захотите, например, Вы также можете включить состояние флажка, если хотите. Первый - __EVENTTARGET, но вам не нужно использовать это напрямую. Когда он соответствует уникальному идентификатору UpdatePanel, обновляется только эта панель.

1 голос
/ 08 марта 2011

В таких случаях у меня обычно есть HiddenField и кнопка с style='display:none;', и я устанавливаю это как триггер UpdatePanel.

Различные элементы управления будут вызывать jQuery, как вы упоминаете, что обновляет HiddenFieldправильное значение, основанное на том, какой элемент управления вызывал это (это флажок в вашем случае).
Затем он нажмет скрытую кнопку CSS ($('#<%=myButton.ClientID %>').click();).Это должно вызвать обновление UpdatePanel, и я могу использовать любую логику, которую я хочу, в кнопке Событие Click на стороне сервера.

1 голос
/ 08 марта 2011

Вы можете использовать UpdatePanel.ChildrenAsTriggers .

<asp:UpdatePanel ID="UpdatePanel1" runat="server"  UpdateMode="Conditional" ChildrenAsTriggers="true"">
    <ContentTemplate>
        <asp:GridView ID="GridView1" runat="server">
         ...
         ...
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...