.Net: Передача значений из JavaScript в C # без обратной передачи - PullRequest
0 голосов
/ 15 октября 2018

Я создаю .Net веб-приложение, используя стороннюю сетку (DevExpress веб-форма ASPxGridView).

Допустим, у меня есть две сетки (Grid1 и Grid2, обе devexpress).

IЯ сталкиваюсь с проблемой, когда мне нужно обновить значения в Grid2, в зависимости от того, какой столбец нажат на Grid1 (во время события onClick).

Я могу захватить строку и столбец в JavaScript, но не могупередайте его обратно к моему серверному коду.

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

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

Кто-нибудь знает способ передачи переменной на стороне клиента в c # безпостбэк, или вызвать нестатический метод c # из JavaScript?Любые предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Если вам нужно «подключить c #», необходимо выполнить запрос к серверу (используя любой из доступных методов - обратный вызов, обратный вызов и т. Д.).

Если вам нужно обновить другойуправляющего (Grid2) рендеринга во время этого запроса, соответствующий HTML-контент должен быть возвращен как результат этого запроса.

Согласно предоставленному описанию, вам необходимо реализовать «каскадные сетки» - т.е. обновить зависимую сеткупри смене основной сетки.Если это так, используйте подход, показанный в примере https://github.com/DevExpress-Examples/how-to-show-detail-information-in-a-separate-aspxgridview-e70, и принудительно вызывайте пользовательский обратный вызов зависимой сетки (и дальнейшее обновление) с помощью метода PerformCallback на стороне клиента + обработайте событие CustomCallback на стороне сервера.

0 голосов
/ 15 октября 2018

Самый простой подход для этого состоит из двух частей, части 1) добавить функцию ajax js на вашу существующую страницу сетки, чтобы обработать событие click и выполнить запрос данных.Часть 2) Создайте отдельную веб-страницу C #, чтобы получить переменную Grid1 на стороне клиента, обработать ее соответствующим образом и затем отправить данные для Grid2.Вот некоторый псевдокод того, как может выглядеть вызов ajax, надеюсь, это поможет.

//in your javascript section
$("#Grid1Cell").click(function(){
    $.ajax({
      type: "GET",
      url: '@Url.Action("GetGrid2Data", "SomeController")"?yourVar=' + encodeURI(yourVal), 
           //alternatively  url: "yourNonMVCpage.aspx?yourVar=" + encodeURI(yourVal), 
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (response) {
          if (response.SomeValues == "blah") {
              $("#Grid2Cell").text(response.SomeValues); //update Grid2
          }
    }});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...