2009-10-20 18 views
6

Recibo este error al hacer clic en el botón Eliminar/enlace en un control GridView.LinqDataSource no admite la propiedad Seleccionar cuando las operaciones Eliminar, Insertar o Actualizar están habilitadas

LinqDataSource [DataSource] no admite la propiedad Seleccione cuando las operaciones de eliminación, inserción o actualización se habilitan

Realmente no entiendo por qué estoy recibiendo este error porque ya tengo hice lo mismo en una página web diferente en mi sitio, sin embargo, la tabla de la que se leen los datos en ese caso no tiene ninguna clave externa, esta sí. ¿Es por eso que estoy obteniendo el error?

Si es importante, la propiedad AutoGenerateDeleteButton está establecida en True y estoy usando linqdatasource para recuperar los datos de la base de datos.

Cualquier entrada sería apreciada :)

Respuesta

11

Al final tuve que seleccionar todos los datos (usando la opción * en el asistente de origen de datos), a continuación, quitar las columnas que no desea mostrar en el GridView. Esto podría ser un poco ineficiente, pero funcionó.

1

Acabo de toparme con este problema y encontré una solución y una explicación en otro lugar.

La instrucción Select da como resultado un tipo anónimo que no se puede asignar cuando la instrucción Delete/Update/Insert debe ser generada por LinqDataSource. La tabla fuente (linq) se usa para generar los metadatos para la operación de la base de datos.

Tendremos que vivir con la pequeña pérdida de rendimiento cuando necesite recuperar todas las columnas en la fuente de datos, pero haga algo de trabajo detrás de escena. Me gusta

Y, si usa GridView, debe especificar la propiedad DataKeyNames a la (s) clave (s) primaria (s) del origen de datos.

Crystal clear !? ;)

0

Claro, el problema es que debe incluir la clave principal en la configuración del origen de datos y luego, marcar como invisible esta clave primaria.

Cuestiones relacionadas