@ Дэвид Пирас: Меня не беспокоят голоса вниз! Я полностью согласен с вами по поводу соответствия стандартам! Но я просто пытался помочь! Ни больше ни меньше! Я сталкивался с ситуацией, похожей на @Homan, но потом мне нужно было как можно скорее заставить ее работать на рабочем сервере. Так что тогда не могли позволить себе искать соответствие стандартам! ;-) Думал, этот парень тоже оказался в похожей ситуации и выиграл бы от того, что я сделал в то время, как быстрое решение. Ура! :-)
лизую функцию, когда пользователь нажимает на любую точку строки в GridView, строка выбирается вместо кнопки «Выбрать».
Чтобы реализовать это, я использую следующий код:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Set the hand mouse cursor for the selected row.
e.Row.Attributes.Add("OnMouseOver", "this.style.cursor = 'hand';");
// The seelctButton exists for ensuring the selection functionality
// and bind it with the appropriate event hanlder.
LinkButton selectButton = new LinkButton()
{
CommandName = "Select",
Text = e.Row.Cells[0].Text
};
e.Row.Cells[0].Controls.Add(selectButton);
e.Row.Attributes["OnClick"] =
Page.ClientScript.GetPostBackClientHyperlink(selectButton, "");
}
}
С кодом выше, есть следующие проблемы:
Это работает нормально, только если яEnableEventValidation
для страницы установлено значениеfalse
.SelectedIndexChanged
увольняется только на тот случай, еслиGrid.DataBind()
называется вPage_Load
для страницы (в каждом постбеке).Я делаю что-то неправильно? Есть ли лучшая реализация?
Редактировать: когдаEnableEventValidation
установлен вtrue
появится следующая ошибка:
Неверный аргумент обратной передачи или обратного вызова. Проверка события включена с использованием в конфигурации или <% @ Page EnableEventValidation = "true"%> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который первоначально их представил. Если данные действительны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.