Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET] DataTable: Inserire riga

    Salve a tutti.
    Sto tentando di inserire una nuova riga "vuota" all'interno di una tabella esistente.
    Il fatto ò che vorrei inserirla in una posizione specifica.
    Ad esempio:

    codice:
    Cod.                Articolo
    -------------------------------------
    ...
    12                  Melanzane
    14                  Patate
    ...
    Supponendo questa sia la mia tabella, vorrei inserire un nuovo articolo di Cod = 13 tra le melanzane e le patate.

    Ho provato nel seguente modo:
    codice:
    Dim rowNumber As Integer = myDataGrid.CurrentCell.RowNumber()
    Dim myNewRow As DataRow = myDataTable.NewRow()
    myDataTable.Rows.InsertAt(myNewRow, rowNumber)
    In questo modo la riga mi viene inserita, ma in fondo alla tabella!
    Dove sbaglio?
    Vi ringrazio in anticipo.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212


    le righe vengono sempre inserite alla fine, se poi hai ID a caso e le ordini per ID allora la vista di quella tabella sarà così come la vuoi

  3. #3
    Ma allora a cosa serve specificare la posizione?

    codice:
    myDataTable.Rows.InsertAt(myNewRow, rowNumber)
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da naighes
    Ma allora a cosa serve specificare la posizione?

    codice:
    myDataTable.Rows.InsertAt(myNewRow, rowNumber)
    ma quello è un metodo del datatable, poi quando scrivi su sql bisogna vedere come scrivi.

    forse non ho capito

  5. #5
    Allora, intanto grazie della disponibilità.
    Io ho un DataGrid, contenente una tabella (myDataTable As DataTable).
    L'utente inserisce dati al suo interno, quindi:

    12 Carote
    14 Melanzane
    29 Zucchini

    ecc ecc.
    Ora, supponiamo che l'utente voglia inserire tra carote e melanzane il nuovo prodotto Barbabietole.
    Devo permetterli di creare una nuova riga tra carote e melanzane...
    Una volta che avrà creato la suddetta riga sarà in grado di inserire la barbabietola.

    Quindi, se scrivo:

    codice:
    myDataTable.Rows.InsertAt(myNewRow, 13)
    dovrei inserire una nuova riga alla posizione 13!
    Non ho parlato di sql. Mi interessa solo capire perchè non riesco ad inserire una riga vuota tra altre due esistenti.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    :master:


    a) un datagrid non contiene nessun datatable

    b) vorresti permettere all'utente di inserire una nuova riga sulla griglia in un punto specifico e poi salvare quei dati in un datatable associato alla griglia?

  7. #7
    Originariamente inviato da darkblOOd
    :master:


    a) un datagrid non contiene nessun datatable
    Perdona la mia ignoranza, ma utilizzo VB.NET da pochissimo.

    b) vorresti permettere all'utente di inserire una nuova riga sulla griglia in un punto specifico e poi salvare quei dati in un datatable associato alla griglia?
    E' esattamente quello che voglio fare!
    Grazie!
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  8. #8
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Il secondo parametro che riceve il metodo InsertAt è un indice in base 0 che si riferisce alla posizione nella quale la riga dovrà essere inserita. L'indice può andare da 0 (inserisce in testa alla tabella) a tabella.Rows.Count - 1 (l'equivalente di utilizzare il metodo Add).
    Spero tu abbia capito che questo non ha nessuna corrispondenza con i tuoi valori di chiave (12, 14, 29).

    Quindi per aggiungere una riga in quella posizione, nell'esempio che hai fatto tu, il parametro pos dovrebbe essere passato con valore 1.

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  9. #9
    Originariamente inviato da biste
    Il secondo parametro che riceve il metodo InsertAt è un indice in base 0 che si riferisce alla posizione nella quale la riga dovrà essere inserita. L'indice può andare da 0 (inserisce in testa alla tabella) a tabella.Rows.Count - 1 (l'equivalente di utilizzare il metodo Add).
    Spero tu abbia capito che questo non ha nessuna corrispondenza con i tuoi valori di chiave (12, 14, 29).

    Quindi per aggiungere una riga in quella posizione, nell'esempio che hai fatto tu, il parametro pos dovrebbe essere passato con valore 1.

    HTH
    Questo l'avevo capito.
    Avevo indicato il valore chiave a titolo puramente indicativo.
    Il fatto è che, se ho un oggetto DataTable contenente 10 elementi che vanno da 0 a miaTabella.Rows.Count - 1 (ovvero 9), come posso aggiungere una nuova riga in posizione 5?
    In modo da translare di una posizione le righe che vanno da 6 in poi...
    Spero di esser stato chiaro.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

  10. #10
    A chi possa interessare, ci sono riuscito:

    codice:
    Dim rowNumber As Integer = myDataGrid.CurrentCell.RowNumber()
    Dim myNewRow As DataRow = myDataTable.NewRow()
    myDataTable.Rows.InsertAt(myNewRow, rowNumber)
    myDataTable.AcceptChanges()
    Grazie a tutti per l'interessamento.
    Nicola Baldi <% Naighes %>
    Il mio blog!

    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.