utilice una selección que propiedad persistente para multiple las funcione especificar debe datos datakeynames claves c# asp.net gridview

c# - propiedad - para que una selección persistente funcione se debe especificar datakeynames



Obtener Gridview Row por Datakeynames (3)

Tengo una vista de cuadrícula y tiene datakeynames="Id"

Tengo ese Id en el archivo de código. Ahora quiero obtener la fila de un Id específico.

Por ejemplo Id = 1 entonces quiero obtener la fila de gridview que tiene Id = 1 He usado este código:

foreach (DataKey key in gdvMainList.DataKeys) { if (Convert.ToInt32(key.Value) == consentReleaseId) { gdvMainListRow = gdvMainList.Rows[index]; break; } index++; }

¿Hay algún mejor enfoque?


Otra opción sería recorrer los elementos de GridView hasta encontrar la clave coincidente.

foreach (GridViewRow row in GridView1.Rows) { if (GridView1.DataKeys[row.RowIndex]["ID"] == consentReleaseId) { gdvMainListRow = row; break; } }


Otra opción sería vincular el ID de fila a un elemento en la fila de gridview. Muy a menudo esto ocurre en un enlace de acción o botón en la propiedad CommandArgument.

<asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit" Visible="True" CommandArgument=''<%# Container.DataItemIndex %>'' />

algo como eso. Luego puede acceder al elemento y obtener la Id. De fila sin ningún bucle.


Una cosa que debe tener cuidado con su nombre es, si tiene paginación en su vista de cuadrícula, y si está en una página diferente, puede terminar tirando de la fila incorrecta o la fila podría no ser encontrada.

En lugar de bucle, puede usar una consulta linq en su fuente de datos como

si su fuente de datos es una lista, obj = lObjs.Where (i => i.Id == permissionReleaseId) .First ();

Si desea cambiar algo en la cuadrícula, puede cambiarlo en el obj y cambiar el origen de datos.