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);
}
}
¿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
póngalo exactamente donde tiene el onclick actualmente codificado. Reemplace su línea de e.Row.Attributes con e.Row.Cells [0] .Attributes. –
@ 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. –