2010-03-16 1 views
1

У меня проблема с telerik RadGrid, я хочу включить выбор нескольких строк. Я также хочу перейти на сервер всякий раз, когда строка выбрана или отменена. Я создал функцию javascript для обработки событий клиентской стороны Grid (OnRowSelected и OnRowDeSelected). Функции выглядеть следующим образом:
Возможно ли, что __doPostBack() когда-либо отправит запрос GET?

function onOperationRowSelected(sender, eventArgs) { 
      __doPostBack("<%=myControl.ClientID %>", "rowSelected:" + eventArgs.get_itemIndexHierarchical()); 
     } 

Другая функция очень похожа, разница лишь в том, что она посылает строку «rowDeselcted» вместо «rowSelected».

On Page_Load Я проверяю, запрашивает ли запрос запрос на отправку с использованием «IsPostBack», и если да, то я проверяю, выбрана ли это строкаSelected или rowdeselected.

Моя проблема в том, что, когда я выбираю первый raw на моей сетке, возникает запрос на отправку (что ожидается), однако, когда я выбираю вторую строку, выдается запрос GET, который (очевидно) приведет к IsPostBack возвращает false.

Что мне здесь не хватает?


EDIT: Я только что проверил объект запроса и обнаружил, что значение свойства HTTPMethod является «POST». Почему это HTTP-запрос POST, а IsPostBack возвращает false?

ответ

1

Вы уверены, что запрос GET имеет правильный аргумент события?
Я думаю, что есть что-то еще, что делает запрос GET. Вероятно, некоторые волшебства AJAX этой сеткой, какой-то ресурс или AJAX PageMethod вызывают или переписывают URL или что-то в этом роде.

Это имя страницы default.aspx или что-то подобное? Иногда в каком-то браузере (не помню подробностей) получение изображения или так (не могу вспомнить точную ситуацию) делает браузер также попадает в URL-адрес «samefolder /», который открывает страницу по умолчанию.

Проверьте запрос с помощью FireBug и посмотрите, что он скажет.

+0

Действительно, это был скрытый вызов ajax сеткой, OnRowSelected Fires OnRowDeselcted первым, то есть, когда вы выбираете строку, ранее выбранная строка запускает OnRowDeselected, которая по умолчанию выдает запрос на получение. – Galilyou

2

Функция соответствует действию <form>. Вот что делает __doPostBack:

function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 

Так это будет делать то, что форма установлена ​​сделать, это просто, как правило, размещать в asp.net.

Так что это возможно? Да, абсолютно, почему это происходит в вашем случае, я не уверен.

2

Не видя разметки, которую генерирует сетка, я предполагаю, что она использует ссылку с обработчиком кликов, обработанным javascript, для выполнения обратной передачи. Я думаю, что наиболее вероятным виновником является ошибка javascript, которая предотвращает увольнение обработчика, что дает вам поведение по умолчанию привязки, к которой применяется обработчик, в этом случае GET. Лучший совет, который я могу вам дать, - посмотреть его в Firefox/Firebug и посмотреть, есть ли какие-либо ошибки, отображаемые в консоли.

Таким образом, вы можете захотеть создать приложение так, чтобы оно работало, если javascript отключен и исправлены ошибки, и выясните, как реагировать, если вы закончите с запросом GET.

+0

, пожалуйста, проверьте мои изменения! – Galilyou

+0

Возможно, вы захотите посмотреть это сообщение на форуме: http://forums.asp.net/p/1079528/3172367.aspx.Возможно ли, что вы загружаете ссылку с пустым URL-адресом при первом срабатывании события? – tvanfosson

Смежные вопросы