2012-02-15 23 views
10

Ho un modulo con una casella di testo e un pulsante Aggiungi.come aggiungere nuove righe in un datable vb.net

  1. l'utente può scrivere un nome nella casella di testo e fare clic sul pulsante Aggiungi. salverà in un datatable con l'auto ID.
  2. in seguito, la casella di testo viene cancellata e l'utente può scrivere un altro nome sulla casella di testo e fare clic sul pulsante.
  3. questo deve essere aggiunto al datatable esistente sulla memoria con ID esistente + 1.
  4. visualizza sul gridview. (questo è solo a scopo di visualizzazione per confermare che funziona)

Ho un datatable come questo.

Button1.click() event 

    Dim name = txtname.Text 
    Dim dt As New DataTable 
    dt.Columns.Add("ID", GetType(Integer)) 
    dt.Columns.Add("Name", GetType(String)) 
    Dim N As Integer = dt.Columns("ID").AutoIncrement 
    dt.Rows.Add(N, name) 
    GridView1.DataSource = dt 
    GridView1.DataBind() 
    txtname.Text = "" 

Al momento ho un po 'come il codice sopra. nel vero programma, non è solo il nome e non è solo un dato, quindi mi sto solo prendendo in giro un po 'di codice.

e questo codice per aspx.

 <asp:TextBox ID="txtname" runat="server"> 
     </asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" /> 
     <asp:GridView ID="GridView1" runat="server"> 
     </asp:GridView> 

qualcuno può consigliarmi come farlo? Capisco che il mio codice sia criptato e non corretto, ma devo solo inserire del codice in modo che voi ragazzi non abbiate bisogno di lavorare da zero per me.

Grazie mille.

risposta

21

Ecco un esempio di aggiunta una nuova riga a una datatable che utilizza AutoIncrement sulla prima colonna:

Definire la struttura della tabella:

Dim dt As New DataTable 
    dt.Columns.Add("ID") 
    dt.Columns.Add("Name") 
    dt.Columns(0).AutoIncrement = True 

aggiungere una nuova riga:

Dim R As DataRow = dt.NewRow 
    R("Name") = txtName.Text 
    dt.Rows.Add(R) 
    DataGridView1.DataSource = dt 
+0

non funziona Caro D ... – lawphotog

+0

si aggiunge il nome ma sostituisce il precedente nome in fila (0) – lawphotog

+0

Non definire il DataTable in l'evento click sul pulsante se contiene dati precedenti necessari per mantenerlo in un ambito più ampio. In questo modo puoi aggiungerlo senza chiamare New e rimuovere tutti i dati precedenti. Se vai con dt privato come datatable a livello di classe, definisci la struttura da qualche parte come su load (ma non sul post back) quando aggiungi una riga nel pulsante click per dt non cancellerà prima tutte le informazioni esistenti. – Jay

4

Per prima cosa è necessario definire la struttura della tabella dati come la seguente:

Dim dt As New DataTable 
dt.Columns.Add("ID", Type.GetType("System.String")) 
dt.Columns.Add("Name",Type.GetType("System.String")) 

e quindi aggiungere fila come:

Dim dr As DataRow = dt.NewRow 
dr("ID") = System.GUID.NewGUID() 
dr("Name") = txtName.Text 
dt.Rows.Add(dr) 
DataGridView1.DataSource = dt 
DataGridView1.DataBind() 
Problemi correlati