Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. terrix77
    3. Post
    T

    terrix77

    @terrix77

    • Profilo
    • Chi segue 0
    • Da chi è seguito 0
    • Discussioni 1
    • Post 2
    • Migliore 0
    • Gruppi 0
    Iscrizione Ultimo Accesso
    0
    Reputazione
    2
    Post
    0
    Visite al profilo
    0
    Da chi è seguito
    0
    Chi segue
    User Newbie

    Post creati da terrix77

    • RE: [ASP.NET] Datagrid complesso con tabella di textbox a runtime

      Ciao Braidiano, sei molto gentile per la risposta e per il tuo aiuto. Con molta fatica sono riuscito a sviluppare la pagina in questione. Non è stata per nulla facile, in quanto dovevo renderizzare e allo stesso tempo memorizzare i valori inputati nelle textbox costruite a runtime contenute a loro volta in una struttura di controlli abbastanza articolata (masterpage- datagrid- tabella - placeholder). Visto che sono riuscito a costruire una struttura simile, se per caso qualcuno avesse la necessità di una struttura simile la metto a completa disposizione della comunità.

      Vi saluto a tutti

      postato in Coding
      T
      terrix77
    • [ASP.NET] Datagrid complesso con tabella di textbox a runtime

      Salve a tutti sono nuovo da queste parti e con me porto un problema riscontrato (ormai una ossessione) in una articolata pagina asp.net.
      Ho una pagina ASP.NET 2.0 così strutturata: un datagrid contenente delle colonne di tipo itemtemplate (1 colonna immagine- 2 colonna label, 3 colonna placeholder - 4 colonna label) i cui valori sono letti da database e la cui logica è piazzata è tutta piazzata nell'evento ONITEMDATABOUND, e fin qui nessun problema. Sempre nel medesimo evento costruisco a runtime una tabella (3 colonna del datagrid di tipo itemtemplate contenete un placeholder) avente il numero di righe e il numero di colonne dipendenti da tre query differenti; sempre all'interno di tale tabella le celle contengono dei textbox creati anch'essi runtime secondo alcune condizioni dettate dalle query precedenti. Tale tabella ASP.NET è aggiunta runtime al placeholder, il quale come già detto, è piazzato nella 3 colonna itemtemplate del datagrid, ed anche fin qui nessun problema.
      In pratica i problemi sono relativi alla tabella ASP.NET, in quanto deve dipendere necessariamente da 3 query che mi danno nell'ordine: intestazione (1 query), prima colonna (2 query), corpo della tabella (3 query dipendente dagli ID delle due precedenti), in pratica si tratta di una struttura matriciale.
      Il mio problema principale consiste nel salvataggio(quando inputo i valori nei textbox) e recupero(quando accedo alla pagina) dei valori di tali textbox in quanto non conosco a priori quanti textbox verranno creati e come strutturare la tabella sql per effettuare le suddette operazioni. Per ridurre la lettura del codice ti posto parte del codice funzionante (contenuto nell'evento ONITEMDATABOUND del datagrid).

      
      //**********************************************************
      //COSTRUZIONE MATRICE VARIANTI
      //**********************************************************
      Table VariantTable = new System.Web.UI.WebControls.Table();
      VariantTable.BorderWidth = 1;
      VariantTable.CssClass = "Varianti";
      VariantTable.GridLines = GridLines.Both;
      VariantTable.CellPadding = 0;
      VariantTable.CellSpacing = 0;
      VariantTable.Width = Unit.Percentage(98);
      //REPERIMENTO DEI COLORI
      SqlConnection conn_color;
      conn_color = new SqlConnection(ConfigurationManager.ConnectionStrings["WFDB"].ConnectionString);
      string SelectColor = "SELECT StyleAssociations.Product AS IDProduct, StyleAssociations.Color AS IDColor, Colors.Name, Colors.Red, Colors.Green, Colors.Blue FROM StyleAssociations INNER JOIN Colors ON StyleAssociations.Color = Colors.Id GROUP BY StyleAssociations.Color, StyleAssociations.Product, Colors.Name, Colors.Red, Colors.Green, Colors.Blue HAVING (StyleAssociations.Product = " + idproduct + ")";
      SqlCommand CmdColor = new SqlCommand(SelectColor, conn_color);
      conn_color.Open();
      SqlDataReader ObjDRColor = CmdColor.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      TableRow tr = new TableRow();
      //PRIMA CELLA VUOTA
      TableCell tdv = new TableCell();
      tdv.Width = Unit.Percentage(10);
      tdv.Text = "";
      tdv.VerticalAlign = VerticalAlign.Middle;
      tr.Cells.Add(tdv);
      ArrayList ListColor = new ArrayList();
      while (ObjDRColor.Read())
      {
      ListColor.Add(ObjDRColor["IDColor"].ToString());
      TableCell td = new TableCell();
      td.Width = Unit.Percentage(10);
      td.Text = /*ObjDRColor["Name"].ToString().ToLower() + */ "<div style='background-color: " + System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.FromArgb(Int32.Parse(ObjDRColor["Red"].ToString()), Int32.Parse(ObjDRColor["Green"].ToString()), Int32.Parse(ObjDRColor["Blue"].ToString()))) + "; width: 10px; height: 10px;'></div>";
      td.VerticalAlign = VerticalAlign.Middle;
      tr.Cells.Add(td);
      }
      ObjDRColor.Close();
      conn_color.Close();
      //INTESTAZIONE DEI TOTALI DELLE QUANTITA'
      TableCell tdIntTotal = new TableCell();
      tdIntTotal.Width = Unit.Percentage(10);
      tdIntTotal.Text = "TOTALE";
      tdIntTotal.VerticalAlign = VerticalAlign.Middle;
      tr.Cells.Add(tdIntTotal);
      //AGGIUNGO LE CELLE COLORI ALLA TABELLA
      VariantTable.Rows.Add(tr);
      //REPERIMENTO DELLE TAGLIE
      SqlConnection conn_size;
      conn_size = new SqlConnection(ConfigurationManager.ConnectionStrings["WFDB"].ConnectionString);
      string SelectSize = "SELECT StyleAssociations.Product AS IDProduct, StyleAssociations.Size AS IDSize, Sizes.Name AS Size FROM StyleAssociations INNER JOIN Sizes ON StyleAssociations.Size = Sizes.Id GROUP BY StyleAssociations.Product, StyleAssociations.Size, Sizes.Name HAVING (StyleAssociations.Product = " + idproduct + ")";
      SqlCommand CmdSize = new SqlCommand(SelectSize, conn_size);
      conn_size.Open();
      SqlDataReader ObjDRSize = CmdSize.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      while (ObjDRSize.Read())
      {
      TableRow trsize = new TableRow();
      TableCell tdsize = new TableCell();
      tdsize.Width = Unit.Percentage(10);
      tdsize.Text = ObjDRSize.ToString().ToUpper();
      tdsize.VerticalAlign = VerticalAlign.Middle;
      trsize.Cells.Add(tdsize);
      //REPERIMENTO DELLE QUANTITA'
      for (int j = 0; j < ListColor.Count; j++)
      {
      TableCell tdquantity = new TableCell();
      tdquantity.Width = Unit.Percentage(10);
      SqlConnection conn_quantity;
      conn_quantity = new SqlConnection(ConfigurationManager.ConnectionStrings["WFDB"].ConnectionString);
      string SelectQuantity = "SELECT * FROM STYLEASSOCIATIONS WHERE Product = " + idproduct + " AND COLOR=" + ListColor[j].ToString() + " AND SIZE=" + ObjDRSize["IDSize"].ToString() + "";
      SqlCommand CmdQuantity = new SqlCommand(SelectQuantity, conn_quantity);
      conn_quantity.Open();
      SqlDataReader ObjDRQuantity = CmdQuantity.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      if (ObjDRQuantity.Read())
      {
      if (ObjDRQuantity["Quantity"] != DBNull.Value)
      {
      tdquantity.Text = ObjDRQuantity["Quantity"].ToString(); /* + "<input type=text size=3 class=InputClass>"; */
      //TODO: DA PROVARE
      ArrayList ListQuantityCode = new ArrayList();
      string QuantityCode = "";
      SqlConnection connQuantityCode;
      connQuantityCode = new SqlConnection(ConfigurationManager.ConnectionStrings["WFDB"].ConnectionString);
      string SelectQuantityCode = "SELECT ASPNETQUANTITYCODE FROM SHOPPINGCART_PRODUCTS WHERE IDShoppingCart = " + idshoppingcart + "";
      SqlCommand CmdQuantityCode = new SqlCommand(SelectQuantityCode, connQuantityCode);
      connQuantityCode.Open();
      SqlDataReader ObjDRQuantityCode = CmdQuantityCode.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      if (ObjDRQuantityCode.Read())
      {
      if (ObjDRQuantityCode["ASPNETQUANTITYCODE"] != DBNull.Value)
      {
      ListQuantityCode.Add(ObjDRQuantityCode["ASPNETQUANTITYCODE"].ToString());
      }
      }
      ObjDRQuantityCode.Close();
      connQuantityCode.Close();
       
      TextBox qty = new TextBox();
      qty.ID = "Crr_" + ListColor[j].ToString() + "_" + ObjDRSize["IDSize"].ToString();
      //DEVO EFFETTUARE QUI LA PROCEDURA PER RECUPERARE I VALORI DEI MIEI TEXT BOX, E COME?
      //DEVO EFFETTUARE QUI LA PROCEDURA PER SALVARE I VALORI DEI TEXTBOX, E COME?
      qty.Text = "";
      qty.CssClass = "InputClass";
      qty.Width = 30;
      tdquantity.Controls.Add(qty);
       
      }
      else
      {
      tdquantity.Text = "";
      }
      }
      ObjDRQuantity.Close();
      conn_quantity.Close();
      tdquantity.VerticalAlign = VerticalAlign.Middle;
      trsize.Cells.Add(tdquantity);
      }
      //CALCOLO TOTALI DELLE QUANTITA' PER COLOR/SIZE
      TableCell tdtotal = new TableCell();
      tdtotal.Width = Unit.Percentage(10);
      int TotaleQuantita = 0;
      for (int i = 0; i < ListColor.Count; i++)
      {
      SqlConnection conn_totalquantity;
      conn_totalquantity = new SqlConnection(ConfigurationManager.ConnectionStrings["WFDB"].ConnectionString);
      string SelectTotalQuantity = "SELECT * FROM STYLEASSOCIATIONS WHERE Product = " + idproduct + " AND COLOR=" + ListColor*.ToString() + " AND SIZE=" + ObjDRSize["IDSize"].ToString() + "";
      SqlCommand CmdTotalQuantity = new SqlCommand(SelectTotalQuantity, conn_totalquantity);
      conn_totalquantity.Open();
      SqlDataReader ObjDRTotalQuantity = CmdTotalQuantity.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      while (ObjDRTotalQuantity.Read())
      {
      if (ObjDRTotalQuantity["Quantity"] != DBNull.Value)
      {
      TotaleQuantita += Int32.Parse(ObjDRTotalQuantity["Quantity"].ToString());
      tdtotal.Text = TotaleQuantita.ToString();
      }
      }
      ObjDRTotalQuantity.Close();
      conn_totalquantity.Close();
      }
      tdtotal.VerticalAlign = VerticalAlign.Middle;
      //END TOTALI DELLE QUANTITA' PER COLOR/SIZE
      trsize.Cells.Add(tdtotal);
      //AGGIUNGO LE CELLE SIZE ALLA TABELLA
      VariantTable.Rows.Add(trsize);
      }
      ObjDRSize.Close();
      conn_size.Close();
      //AGGIUNGO AL PLACEHOLDER LA TABELLA VARIANTI
      PlhVarianti.Controls.Add(VariantTable);
      //**********************************************************
      //END COSTRUZIONE MATRICE VARIANTI
      //**********************************************************
      
      

      Capisco che il problema non è di facile soluzione infatti in ben 12 forum dedicati ad asp.net nessuno mi ha saputo dare una soluzione al mio problema, ma io ci tento anche qui, ciao e grazie in anticipo.

      postato in Coding
      T
      terrix77