Cita: Te recomiendo q busques la forma de generar el ID del ALBARAN al entrar a AGREGAR una nueva orden
La manera que tengo de sacar el ID del Albaran insertado sería que me lo devolviera el Procedimiento de Inserción del Albarán a través de un parámetro de tipo OUTPUT, que llevaría el SqlDataSource vinculado a este Procedimiento
Código:
CREATE PROCEDURE [dbo].[spIns_Albaran]
@codigo INT OUTPUT,
...
INSERT INTO ALBARANES (campo1, campo2,...)
VALUES (...)
-- RECOGIENDO EL ID DEL ALBARÁN INSERTADO
SELECT @codigo = @@IDENTITY
Y luego con el evento de [OnInserted] del SqlDataSource de inserción recogería ese ID de Albarán Insertado que se incluiría como campo [albaran] en cada uno de los registros de la tabla [RESIDUOS_A].
Cita: El GridView trae varias funciones, puedes buscar sobre EDICION EN 2 VIAS, cuestión q las checaras a ver si te sirven.
¿A qué te refieres exactamente, qué es eso de
EDICIÓN EN 2 VÍAS?
Cita: Del modo q tu lo intentas, sería:
* Poner un Panel vacio
Si la idea es poner un Panel que será el que contenga la consabida tabla par insertar las cantidades de los Residuos recogidos. Solamente un panel, no uno por cada lía de la tabla.
Cita: * Leer la tabla Residuos y por cada registro [ foreach(DataRow drRow in dtResiduos){} ] generar LiteralControl's (instrucciones en HTML, en este caso) pa' q te agregue el LABEL con el nombre del Residuo, el TEXTBOX de Cantidad y el TEXTBOX de Personas, el cambio de linea, agregar Este al Panel y luego regresar a leer el sig registro y generar esto mismo... asi hasta q no tengas mas registros.
Si la idea es usar un foreach para generar la lista de Residuos y lo demás.
Lo de los LiteralControl, ¿cómo es exactamente, me puede detallar más ó poner un ejemplo de cómo sería para este caso?
Yo estaba tratando de crear algo como así:
Código:
TextBox cantidad_txt = new TextBox();
TextBox personas_txt = new TextBox();
for (int i = 0; i <= totResiduos; i++)
{
cantidad_txt.ID = "cantidad_" + i;
personas_txt.ID = "personas_" + i;
Panel1.Controls.Add(cantidad_txt);
Panel1.Controls.Add(personas_txt);
}
Aunque tampoco me resulta porque solo me crea el último ciclo del for (es decir si el totResiduos fuese 10, solamente me crea los TextBox cantidad_10 y personas_10)
Cita: * Lo complicado viene al intentar guardar, pq tendrás q recorrer TODOS los controles TextBox q tengas y crear tu query pa' almacenar estos valores e irlos agregando a RESIDUOS_A
Eso también no tengo claro cómo hacerlo ¿ninguna idea de cómo realizarlo?
Al final lo que haces es sólo una apreciación de entendimiento de lo que quiero conseguir, ó puedes sugerirme algo más concreto de como conseguir lo que quiero.
¿Sigues con la idea de que lo mejor es usar un GridView para todo esto?
¿Se puede poner de primeras un GridView en estado de Edición nada mas sacarlo?
¿Cuando se confirme la Edición de una de las filas en vez de modificar determinado registro en una tabla se podría insertar los datos de esa fila del GridView en un ListBox aparte?
Se me estaba ocurriendo, como posible solución, usar un GridView y que toda fila que se modificara al Aceptar su edición, se incluyera en un ListBox. Y luego tras insertar el Albarán, los posibles registros de la tabla RESIDUOS_A vinieran de la lectura del contenido del ListBox.
Sino insisto en que si tienes una forma de cómo hacerlo, me lo cuentes más detalladamente.
Lo mismo que comunico a cualquier otra persona que puede sugerir lo que crea conveniente ... Gracias de nuevo.