Pregunta

Estoy escribiendo un front-end prototipo simple usando un GridView que se completa mediante la función, en lugar de estar vinculado directamente a una fuente de datos SqlServer.

Para poder eliminar una fila / registro de la cuadrícula / base de datos subyacente que estoy actualmente

  1. Configuración de AutoGenerateDeleteButton = true
  2. Mostrar los identificadores de registro únicos en la primera columna
  3. Manejando el evento RowDeleting
  4. Obteniendo la identificación obteniendo la grilla. Filas [e.RowIndex] .Cells [idIndex] .Text
  5. Pasando ese número a una función que borra

Esto parece estar funcionando bien, pero prefiero no mostrar los identificadores a los usuarios porque no significan nada para ellos.

Intenté establecer la propiedad Visible de la columna de identificación en falso, pero esto hizo que el paso 4 anterior devolviera una cadena vacía, por lo que no se eliminó ningún registro.

Entonces, ¿cómo guardo el número de identificación oculto con cada fila?

¿O voy por esto completamente por el camino equivocado?

Seguimiento de respuestas:

Gracias por las dos respuestas, terminé yendo al estilo DataKeyNames de Eric. Para otras personas nuevas en ASP.NET como yo, los pasos que utilicé fueron donde

  • Entre las líneas donde configuré las cuadrículas DataSource y llamé DataBind (), agregué

    grid.DataKeyNames = nueva cadena [] {" id "};

  • Luego, en la función que maneja el RowDeleting, obtuve mi identificación usando

    grid.DataKeys[e.RowIndexfont>.Value

¿Fue útil?

Solución

GridView tiene una propiedad DataKeyNames. Cuando vincula una fuente de datos a la cuadrícula, establece DataKeyNames (generalmente con un solo nombre, su campo PK). No muestra la PK, pero puede obtenerla desde el código subyacente.

Otros consejos

Visible = falso significa que no se procesa en la página. Lo que desea es convertirlo en un campo de plantilla y usar un HiddenField para mantener el valor o establecer el estilo en el control para "mostrar: ninguno". Este sería el caso si el código del lado del cliente necesitara acceder al valor de una llamada Ajax o algo así.

De lo contrario, use la propiedad DataKeyNames como sugiere @Eric Z Beard.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top