51 messaggi dal 04 settembre 2010
Buongiorno,
Chiedo il vostro aiuto in merito ad un problema di memorizzazione dati nel database, in pratica ho una pagina web composta da una struttura con multiview, all'intero delle view tante textbox e gridview, il tutto devo memorizzare i dati in 4 tabelle diverse ma legate da id padre della tabella master.
Praticamente vorrei salvare i dati solo alla fine della compilazione delle textbox e soprattutto delle gridview assegnando id recuperato dal database e assegnato al client, visto che il programma e multi utente.
Chiedo un aiuto e un consiglio
Grazie
10.907 messaggi dal 09 febbraio 2002
Contributi
Ok, dove hai trovato l'intoppo esattamente? Non riesci a recuperare i valori da tutte le view?

Enjoy learning and just keep making
51 messaggi dal 04 settembre 2010
Ciao grazie per la risposta,
Il problema lo riscontro all'inserimento dei dati nelle gridview non riesco ad aggiungere righe per poi gestire memorizzazione dei dati nel database e il ripopolamento di tutti i controlli.
10.907 messaggi dal 09 febbraio 2002
Contributi
Ok, affronta un problema alla volta.
Per prima cosa fai esperienza nel realizzare una GridView editable, cioè in cui si possano inserire, modificare ed eliminare righe. Per questo crea un nuovo progetto e segui i passi di questo articolo:
https://www.aspsnippets.com/Articles/Simple-Insert-Select-Edit-Update-and-Delete-in-ASPNet-GridView-control.aspx

Quando avrai accumulato sufficiente esperienza, prova ad integrarlo nel tuo progetto attuale, quello con le multiview.

ciao,
Moreno

Enjoy learning and just keep making
51 messaggi dal 04 settembre 2010
Grazie,
avevo già visto l'esempio, devo dire che va benissimo, il problema è che io vorrei memorizzare nel database i dati inseriti nella gridview alla fine e non ad ogni inserimento di riga.

Ho trovato un esempio che fa al caso mio ha questa struttura:
<asp:gridview ID="Gridview1"  runat="server"  ShowFooter="true"   
                               AutoGenerateColumns="false"   
                               OnRowCreated="Gridview1_RowCreated" CssClass="mydatagrid" PagerStyle-CssClass="pager"
 HeaderStyle-CssClass="header" RowStyle-CssClass="rows">   
      <Columns>   
          <asp:BoundField DataField="RowNumber" HeaderText="Nr." ItemStyle-HorizontalAlign="center" ItemStyle-Width="20" />   
          <asp:TemplateField HeaderText="Header 1" >   
              <ItemTemplate >   
                  <asp:TextBox ID="TextBox1" runat="server" Width="100"></asp:TextBox>   
              </ItemTemplate>   
                <ItemStyle Width="100px" />

          </asp:TemplateField>   
          <asp:TemplateField HeaderText="Header 2">   
              <ItemTemplate>   
                  <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>   
              </ItemTemplate>   
          </asp:TemplateField>   
        <asp:TemplateField  HeaderText="Header 3">   
            <ItemTemplate>   
                  <asp:DropDownList ID="DropDownList1" runat="server"   
                                            AppendDataBoundItems="true">   
                    <asp:ListItem Value="-1">Select</asp:ListItem>   
                </asp:DropDownList>   
            </ItemTemplate>   
        </asp:TemplateField>   
        <asp:TemplateField HeaderText="Header 4">   
              <ItemTemplate>   
                  <asp:DropDownList ID="DropDownList2" runat="server"   
                                            AppendDataBoundItems="true">   
                      <asp:ListItem Value="-1">Select</asp:ListItem>   
                  </asp:DropDownList>   
              </ItemTemplate>   
            <FooterStyle HorizontalAlign="Right" />   
              <FooterTemplate>   
                  <%--<asp:Button ID="ButtonAdd" runat="server"    
                                       Text="Add New Row"    
                                       onclick="ButtonAdd_Click" />   --%>
               <asp:ImageButton ID="ButtonAdd" ImageUrl="~/Image/Button Add.ico" runat="server" Width="25px" Height="25px" ToolTip="Aggiungi nuovo Record" CssClass="Button" onclick="ButtonAdd_Click"/>
              </FooterTemplate>   
          </asp:TemplateField>   
          <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="30">   
              <ItemTemplate>   
              <%--  <asp:LinkButton ID="LinkButton1" runat="server"    
                                          onclick="LinkButton1_Click">Remove</asp:LinkButton>   --%>
               <asp:ImageButton ID="btnDel" ImageUrl="~/Image/Button Del.ico" runat="server" Width="25px" Height="25px" ToolTip="Cancella Record corrente" CssClass="Button" onclick="btnDel_Click"/>
              </ItemTemplate>   
          </asp:TemplateField>   
      </Columns>   
  </asp:gridview>


però o il problema che non so come fare mantenendo il codice sottostante ma popolarlo da database:

Private Sub SetInitialRow()
        Dim dt As DataTable = New DataTable
        Dim dr As DataRow = Nothing
        dt.Columns.Add(New DataColumn("RowNumber", GetType(System.String)))
        dt.Columns.Add(New DataColumn("Column1", GetType(System.String)))
        'for TextBox value    
        dt.Columns.Add(New DataColumn("Column2", GetType(System.String)))
        'for TextBox value    
        dt.Columns.Add(New DataColumn("Column3", GetType(System.String)))
        'for DropDownList selected item    
        dt.Columns.Add(New DataColumn("Column4", GetType(System.String)))
        'for DropDownList selected item    
        dr = dt.NewRow
        dr("RowNumber") = 1
        dr("Column1") = String.Empty
        dr("Column2") = String.Empty
        dt.Rows.Add(dr)
        'Store the DataTable in ViewState for future reference    
        ViewState("CurrentTable") = dt
        'Bind the Gridview    
        Gridview1.DataSource = dt
        Gridview1.DataBind()
        'After binding the gridview, we can then extract and fill the DropDownList with Data    
        Dim ddl1 As DropDownList = CType(Gridview1.Rows(0).Cells(3).FindControl("DropDownList1"), DropDownList)
        Dim ddl2 As DropDownList = CType(Gridview1.Rows(0).Cells(4).FindControl("DropDownList2"), DropDownList)
        Me.FillDropDownList(ddl1)
        Me.FillDropDownList(ddl2)
    End Sub


se posso avere una mano a correggere il codice per popolarlo da database mantenendo la stessa strurrura sarebbe perfetto.
Grazie
10.907 messaggi dal 09 febbraio 2002
Contributi
Ciao,


se posso avere una mano a correggere il codice per popolarlo da database mantenendo la stessa strurrura sarebbe perfetto.

Ok, è facile: anziché creare tu a mano il DataTable, lo puoi riempire con il risultato di una query SQL usando un data reader e il metodo Load del DataTable. Ecco un esempio:
Dim dt As New DataTable()

'Adegua connectionString e query
Dim connectionString = "..."
Dim query = "SELECT * FROM NomeTabella"

Using conn As New SqlConnection(connectionString)
    conn.Open()
    Using cmd = conn.CreateCommand()
        cmd.CommandText = query
        Using reader = cmd.ExecuteReader()
            dt.Load(reader)
        End Using
    End Using
End Using

'Da qui continua come al solito
ViewState("CurrentTable") = dt
Gridview1.DataSource = dt
Gridview1.DataBind()


Io qui ho usato l'oggetto SqlConnection presupponendo che tu ti debba collegare a un database Sql Server ma se stai usando altro database dovrai usare l'oggetto connection opportuno (es. MySqlConnection per MySQL).

ciao,
Moreno
Modificato da BrightSoul il 05 settembre 2018 19.54 -

Enjoy learning and just keep making
51 messaggi dal 04 settembre 2010
Grazie perfetto proprio quello che cercavo.
Ho risolto il problema
Alla prossima grazie.
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.