Bound DropDownList de artículos “no utilizados” plus elemento de la fila actual en EditItemTemplate de GridView?

StackOverflow https://stackoverflow.com/questions/2250395

Pregunta

Tengo 2 tablas con identificadores únicos que se pueden asignar a la otra (una tabla proviene de una base de datos fuera de mi solicitud, pero tiene información sobre las mismas entidades que estoy de rastreo). Quiero proporcionar una interfaz de usuario para la vinculación de "mis" registros con los "otros" queridos, para que pueda almacenar los "otros" identificaciones en mi mesa para los registros coincidentes. En pocas palabras, el elemento clave de interfaz de usuario es una lista desplegable que muestra la disposición (es decir, aún no ligado a) los registros de la "otro" tabla.

Tengo un gridview para la visualización de "mis" registros en cada fila, además de una columna que muestra algo de información del registro vinculado en el "otro" mesa, si la hay. Los datos son sobre edificios y propiedades, por lo que podría tener este aspecto:

Building1   Dallas   TX    Building1_Dallas_TX
Building2   Memphis  TN    Bldg2_Memphis_TN
Building3   Denver   CO
Building4   Seattle  WA
Building5   Boston   MA    Building5_Boston_MA

donde las 3 primeras columnas muestran alguna información de "mi" mesa, y la última muestra el registro coincidente del "otro" mesa, donde los registros ya han sido vinculados, de lo contrario un espacio en blanco donde se ha establecido ningún vínculo. Mi gridview actual tiene varios más columnas de "mi" mesa, pero esto es suficiente para ilustrar la necesidad.

Cuando se hace clic en Editar (no se muestra) para una fila, quiero ser capaz de editar los 4 columnas. El primero 3 son cuadros de texto; la última columna debe ser una lista desplegable que muestra toda la desvinculado registros de la "otra" mesa, Plus una opción "sin asignar" (como el primer elemento de la lista) por lo registros pueden ser "no vinculadas" o simplemente dejado sin asignar, plus (para las filas que ya tienen una relación establecida) el elemento vinculado (que es "utilizado" pero tiene que estar ahí para que puedan seguir usarlo).

Puedo poblar la lista desplegable correctamente en código subyacente en caso RowEditing gridview (excepto para el elemento sin asignar la que agrego como ListItem en .aspx con la opción AppendDataBoundItems establecido en true), y puedo establecer la correcta en SelectedValue DataBound caso del DDL, pero en la devolución de datos cuando hago clic para actualizar la fila, el DDL no tiene artículos de nunca más (excepto para el elemento sin asignar) por lo que el enlace siempre se borra. Si fijo un enlace manualmente editando directamente mi mesa, todo se ve bien entrar en el modo de edición - el DDL tiene los elementos correctos en ella y se pre-selecciona el elemento correcto, pero todo está perdido en la devolución de datos de actualización. He intentado volver a unir el DDL en las diversas etapas del ciclo de la página pero es evidente que no acabo de entender que el ciclo lo suficientemente bien todavía porque no puedo encontrar la manera de conseguir el artículo seleccionado por el usuario para actualizar mi mesa.

También he intentado poblar el DDL con un SqlDataSource SelectCommand, pero no han tenido suerte que incluye el ID de registros vinculados actualmente en la otra base de datos (a pesar de que está disponible en "mi" mesa y configurarlo como un GridView DataKey y agregarlo como un ControlParameter en los SelectParameters para el SqlDataSource. sin el registro vinculado actualmente en la lista de elementos DDL, no puedo seguir los enlaces existentes.

Voy a mantener a raya el envío de un ejemplo de código por ahora - este mensaje ya es demasiado largo! -., Con la esperanza de que la solución es obvio a partir de lo que he descrito ... no creo que mi objetivo es raro, pero estoy abierto a ser persuadido de lo contrario

Muchas gracias de antemano!

Chris

¿Fue útil?

Solución

Ok, no voy a entrar en detalles con código porque tal vez ya terminado lo que estoy a punto de sugerir.

En la última columna, la lista desplegable, tiene que ejecutar una instrucción SQL para agarrar los artículos que no ligados. Utilice la opción "donde xx NO EN". Para la opción "sin asignar", sólo tiene que añadir un elemento a la lista en el mismo alcance que el anterior código.

El siguiente paso es para controlar los eventos de edición del GridView manualmente. Insertar, actualizar y eliminar.

Creo que de esa manera usted no tendrá problemas.

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