Запуск события на стороне сервера из управления Datagrid через javascript

#javascript #asp.net #datagrid #postback

#javascript #asp.net #datagrid #обратная отправка #обратная передача

Вопрос:

У меня есть Datagrid со столбцом TemplateColumn, который содержит текстовое поле. Когда пользователь нажимает Enter с фокусом на текстовом поле, я хочу запустить событие на стороне сервера, такое как TextChanged.

Для этого я запускаю скрипт в текстовом поле, введенный в код позади.

 txt.Attributes.Add("onkeydown", String.Format("javascript:if (event.keyCode == 13)__doPostBack('{0}', '');", txt.ClientID));
  

Скрипт правильно подключен к элементу управления, но событие на стороне сервера никогда не запускается. Это определяется как:

 public void txt_TextChanged(object sender, EventArgs e)
{......}
  

Я также попробовал __doPostBack(‘{0}’, ‘TextChanged’).

Итак, обратная отправка запускается, но событие никогда не вызывается.

Есть идеи о том, что здесь может быть не так?

Ответ №1:

вы можете попробовать вот так…

вы можете использовать метод GetPostbackEventReference объекта страницы для регистрации ASP.NET серверный элемент управления, который может создавать обратную отправку с использованием обратного вызова на стороне клиента.

 Page.GetPostBackEventReference(txt_sssn_dt);
  

Затем вы можете использовать событие __dPostBack для запуска события TextChanged элемента управления выбора даты (txt_sssn_dt). Этот код был помещен внутри функции JavaScript выбора даты, и он будет запускаться каждый раз, когда пользователь выбирает дату из средства выбора даты.

 __doPostBack("txt_sssn_dt", "TextChanged");
  

Также было необходимо написать простую функцию JavaScript для обработки ситуации, когда пользователь просто хотел ввести дату непосредственно в средство выбора даты (txt_sssn_dt). для этого вы можете написать функцию JavaScript, называемую doPostBack().

 function DoPostBack()
{
   __doPostBack("txt_sssn_dt", "TextChanged");
}
  

вы должны вызвать эту функцию для события onChange элемента управления выбора даты.

 if(!IsPostback)
{
    /...Implementation.../ 
     /.................../
    txt_sssn_dt.Attributes.Add("OnChange", 
          "javascript:return DoPostBack()")
}
  

Взято отсюда:JavaScriptAndServerEvents

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

1. В моем сценарии это не сработало, но мне удалось заставить это работать по-другому. Спасибо вам за помощь.