Строка Gridview кликабельна, кроме первого столбца? - PullRequest
6 голосов
/ 25 апреля 2011

Я использую следующий код, чтобы сделать всю строку моего gridview кликабельной:

 protected void gridMSDS_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';this.style.backgroundColor='#EEFF00'";
            e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';this.style.backgroundColor='White'";

            e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(this.gridMSDS, "Select$" + e.Row.RowIndex);
        }
    }

Что отлично работает, за исключением того, что теперь я хочу добавить возможность редактирования в сетку. Это работает, но когда у меня активированы как функции щелчка строк, так и функции редактирования, нажатие на кнопку ссылки «Редактировать» часто запускает событие щелчка строки и наоборот.

Итак, как сохранить кликабельность строки, кроме указанных столбцов?

UPDATE: Вот что я использую.

Основано на решении Джастина:

 List<int> notClickable = new List<int>();
 {
       notClickable.Add(0);
       notClickable.Add(2);
 }

 for(int i = 0; i < e.Row.Cells.Count; i++)
 {
     if (!notClickable.Contains(i))
     {
          e.Row.Cells[i].Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.gridMSDS, "Select$" + e.Row.RowIndex);
     }
 }

1 Ответ

4 голосов
/ 26 апреля 2011

Хитрость заключается в регистрации клика по определенным столбцам, которые должны быть кликабельными.Приведенный ниже код предполагает, что вы знаете индексы, которые должны быть активными (в данном случае 0).

e.Row.Cells[0].Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(this.gridMSDS, "Select$" + e.Row.RowIndex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...