#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. В моем сценарии это не сработало, но мне удалось заставить это работать по-другому. Спасибо вам за помощь.