@ Дэвид Пирас: Меня не беспокоят голоса вниз! Я полностью согласен с вами по поводу соответствия стандартам! Но я просто пытался помочь! Ни больше ни меньше! Я сталкивался с ситуацией, похожей на @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, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.

Ответы на вопрос(5)

Ваш ответ на вопрос