2016-12-28 2 views
-1

Ich habe ein Problem beim Abrufen von Daten aus einer Liste, ich muss die Informationen für jeden ausgewählten Datensatz abrufen, und ich kann das tun, aber ich habe diese Daten in einer Liste <> und ich brauche es in den Textboxen, I-Klassen für die Arbeit in meiner app haben, ist dies meine Data Layer:Abrufen von Werten aus LIST <>

public List<Cajas> cajas_upd_cons_caja_detalle(string clienteCodigo, string cajaCodigo, int cajaNumero) 
{ 
    List<Cajas> ListCaj_x_Cod_CajNum = new List<Cajas>(); 
    string storedProcedure = "CAJAS_UPD_CONS_CAJA_DETALLE"; //stored procedure 

    using (DbConnection con = dpf.CreateConnection()) 
    { 
     con.ConnectionString = conStr; 
     using (DbCommand cmd = dpf.CreateCommand()) 
     { 
      cmd.Connection = con; 
      cmd.CommandText = storedProcedure; 
      cmd.CommandType = CommandType.StoredProcedure; 

      DbParameter param1 = cmd.CreateParameter(); 
      param1.DbType = DbType.String; 
      param1.ParameterName = "CLIENTE_CODIGO"; //param 
      param1.Value = clienteCodigo.Replace(" ", ""); 
      cmd.Parameters.Add(param1); 

      DbParameter param2 = cmd.CreateParameter(); 
      param2.DbType = DbType.String; 
      param2.ParameterName = "CAJA_CODIGO"; //param 
      param2.Value = cajaCodigo.Replace(" ", ""); 
      cmd.Parameters.Add(param2); 

      DbParameter param3 = cmd.CreateParameter(); 
      param3.DbType = DbType.String; 
      param3.ParameterName = "CAJA_NUMERO"; //param 
      param3.Value = cajaNumero; 
      cmd.Parameters.Add(param3); 

      con.Open(); 
      cmd.ExecuteNonQuery(); 
      using (DbDataReader dr = cmd.ExecuteReader()) 
      { 
       while (dr.Read()) 
       { 
        try 
        { 
         //THIS IS MY CLASS 
         Cajas caja = new Cajas(); // 

         caja.CajaContenido = dr["CONTENIDO"].ToString(); 
         caja.CajaEstado = dr["EST"].ToString(); 
         caja.FecEmisionDoc = Convert.ToDateTime(dr["EMISION"].ToString()); 
         caja.FecCaducidDoc = Convert.ToDateTime(dr["CADUCIDAD"].ToString()); 
         caja.CajaUbi1 = dr["UBI1"].ToString(); 
         caja.CajaUbi2 = dr["UBI2"].ToString(); 
         ListCaj_x_Cod_CajNum.Add(caja); 
        } 
        catch (System.InvalidCastException) 
        { } 
       } 
      } 
     } 
    } 
    return ListCaj_x_Cod_CajNum; 
} 

das ist meine Präsentation Klasse:

protected void Page_Load(object sender, EventArgs e) 
{ 
    UpdCadDet_limpiarCampos(); 
    if (!IsPostBack) 
    { 
     clienteCodigo = Request.QueryString["cliCod"]; 
     cajaCodigo = Request.QueryString["cajCod"]; 
     cajaNumero = Request.QueryString["cajNum"]; 
     lblUpdCajDet_CliCod.Text = clienteCodigo; 
     lblUpdCajDet_CajCod.Text = cajaCodigo; 
     lblUpdCajDet_CajNum.Text = cajaNumero; 

     //this is only for testing 
     List<Cajas> cajastest = cajaUpd_BL.cajas_upd_cons_caja_detalle (clienteCodigo, cajaCodigo, Convert.ToInt32(cajaNumero)); 

    } 
} 

Wenn y Debug die Anwendung ich die Werte abgerufen sehen aus der DB, aber meine Frage ist wie kann ich sie in meiner Präsentationsklasse (in der GUI) bekommen.

Ich hoffe jemand kann mir bitte helfen.

freundlichen Grüßen

+2

Nebenbei bemerkt erhalten: Sie die Abfrage zweimal sind der Ausführung mit 'ExecuteNonQuery 'und' ExecuteReader'. Ich empfehle den 'ExecuteNonQuery'-Aufruf zu entfernen. – Caramiriel

+0

Es liegt an Ihnen. Wie möchten Sie sie anzeigen? Die einfachste Idee ist ein Datenraster (Tabellenformat). Hier ist ein Link für Sie: http://www.c-sharpcorner.com/uploadfile/anjudidi/example-of-datagrid-in-asp-net/ – Sparrow

+0

Danke Caramiriel Ich habe getestet, weil ich einen Fehler hatte und ich konnte die Daten nicht abrufen, aber dieser Teil ist gelöst. Ich werde das korrigieren. Danke, Feryal, Aber diese Info kommt von einer anderen Seite gridview, es ist das Detail aus jedem Datensatz, denn das folgende wird den Datensatz ändern –

Antwort

0

Dank Ich könnte die Liste Werte erhalten:

List<Cajas> cajadetalle = cajaUpd_BL.cajas_upd_cons_caja_detalle 
      (clienteCodigo, cajaCodigo, Convert.ToInt32(cajaNumero)); 

     txtUpdCajDet_CajCon.Text = cajadetalle[0].CajaContenido.ToString(); 
     txtUpdCajDet_CajEst.Text = cajadetalle[0].CajaEstado.ToString(); 
     txtUpdCajDet_CajFem.Text = cajadetalle[0].FecEmisionDoc.ToString(); 
     txtUpdCajDet_CajFca.Text = cajadetalle[0].FecCaducidDoc.ToString(); 
     txtUpdCajDet_CajFal.Text = cajadetalle[0].AltaFecha.ToString(); 
     txtUpdCajDet_CajFba.Text = cajadetalle[0].BajaFecha.ToString(); 
     txtUpdCajDet_CajUb1.Text = cajadetalle[0].CajaUbi1.ToString(); 
     ...... 
     ...... 

So kann ich die Werte in Textboxen

Verwandte Themen