2012-02-15 22 views
10

Mam formularz z polem tekstowym i przyciskiem dodawania.jak dodawać nowe wiersze do datablitu vb.net

  1. użytkownik może napisać nazwisko w polu tekstowym i kliknąć przycisk Dodaj. zapisze w datatable z automatycznym ID.
  2. po tym polu tekstowym zostanie wyczyszczone, a użytkownik może napisać inną nazwę w polu tekstowym i kliknij przycisk.
  3. powinno to dodać do istniejącego zbioru danych w pamięci o istniejącym ID + 1.
  4. pokazać na widoku siatki. (jest to tylko w celu wyświetlania, aby potwierdzić, że działa)

Posiadam takie datatable.

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 = "" 

W tej chwili mam trochę jak kod powyżej. w prawdziwym programie to nie tylko nazwa i nie jest to tylko jeden datatable, więc po prostu wyśmiewam jakiś kod.

i ten kod dla 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> 

Czy ktoś może mi doradzić, jak to zrobić? Rozumiem, że mój kod jest podrobiony i nie jest poprawny, ale muszę po prostu wstawić kod, żebyście nie musieli pracować dla mnie od zera.

Dziękuję bardzo.

Odpowiedz

21

Oto przykład dodania nowego rzędu w datatable który wykorzystuje autoIncrement w pierwszej kolumnie:

definiują strukturę tabeli:

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

dodać nowy wiersz:

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

nie działa Drogi D ... – lawphotog

+0

dodaje nazwa ale zastępuje poprzednią nazwę w wierszu (0) – lawphotog

+0

nie definiują swoją DataTable w zdarzenie click button, jeśli ma wcześniejsze dane, które trzeba zachować w szerszym zakresie. W ten sposób możesz dodać do niego, bez wywoływania nowych i usuwania wszystkich wcześniejszych danych. Jeśli idziesz z Private dt jako datatable na poziomie klasy, zdefiniuj strukturę gdzieś w rodzaju load (ale nie na post back), gdy dodasz wiersz w przycisku click to dt, to nie wyczyści wszystkich istniejących informacji w pierwszej kolejności. – Jay

4

Najpierw należy zdefiniować strukturę tabeli danych, tak jak poniżej:

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

a następnie dodać wiersz jak:

Dim dr As DataRow = dt.NewRow 
dr("ID") = System.GUID.NewGUID() 
dr("Name") = txtName.Text 
dt.Rows.Add(dr) 
DataGridView1.DataSource = dt 
DataGridView1.DataBind() 
Powiązane problemy