2011-04-25 47 views
5

estoy usando el siguiente código para hacer la fila entera de mi hacer clic gridview:¿Se puede hacer clic en la fila de Gridview, excepto en la primera columna?

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); 
     } 
    } 

Qué funciona muy bien, excepto que ahora quiero añadir edición capacidad de la red. Esto funciona, pero cuando tengo habilitadas las funciones tanto de clic de fila como de edición, al hacer clic en el botón de enlace "Editar" a menudo se activa el evento de clic de fila y viceversa.

Entonces, ¿cómo puedo evitar que la fila puede hacer clic, a excepción de las columnas especificadas?

ACTUALIZACIÓN: Aquí es lo que estoy usando.

basado en la solución de Justin:

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); 
    } 
} 

Respuesta

4

El truco es el registro el clic en las columnas específicas que tienen que hacer clic. El siguiente código supone que conoce los índices en los que se debe hacer clic (en este caso, 0).

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

¿Dónde debería colocar este código? ¿Podría recorrer las celdas de la fila, haciendo que las celdas se puedan hacer clic dos veces? – MAW74656

+0

póngalo exactamente donde tiene el onclick actualmente codificado. Reemplace su línea de e.Row.Attributes con e.Row.Cells [0] .Attributes. –

+0

@ MAW74656 - y sí, puede recorrer las celdas. e.Row.Cells.Length creo que le da el número de células, puede ser e.Row.Cells.Count. –

Cuestiones relacionadas