2013-02-27 78 views
0

誰能幫助我如何在GridView控件在ASP 這裏添加新紀錄是我的代碼:如何在GridView中插入記錄

Partial Class _Default 
    Inherits System.Web.UI.Page 
    Dim drow As DataRow 
    Dim dt As New DataTable 
    Dim x As Integer 

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
     drow = dt.NewRow 
     drow("fname") = TextBox1.Text 
     drow("mname") = TextBox2.Text 
     drow("lname") = TextBox3.Text 
     dt.Rows.Add(drow) 

     GridView1.DataSource = dt 
     GridView1.DataBind() 
    End Sub 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     If Page.IsPostBack = False Then 
      binds() 
     End If 
    End Sub 
    Protected Sub binds() 

     dt.Columns.Add("fname") 
     dt.Columns.Add("mname") 
     dt.Columns.Add("lname") 
     drow = dt.NewRow 
     drow("fname") = TextBox1.Text 
     drow("mname") = TextBox2.Text 
     drow("lname") = TextBox3.Text 
     dt.Rows.Add(drow) 

     GridView1.DataSource = dt 
     GridView1.DataBind() 
    End Sub 
End Class 

當我點擊按鈕的錯誤說,FNAME不屬於到桌上。謝謝

回答

0

原因是所有對象都放置在頁面生命週期的末尾,包括您的DataTableDataRow和ineteger。他們將在每次回傳時使用其默認值進行初始化。

但你必須在這個Page_Load初始化代碼:

If Page.IsPostBack = False 
    binds() ' which creates the table and adds the columns ' 
End If 

的解決方法是不使用字段,但局部變量。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    binds() 
End Sub 

Private Sub binds() 
    Dim drow As DataRow 
    Dim dt As New DataTable 
    dt.Columns.Add("fname") 
    dt.Columns.Add("mname") 
    dt.Columns.Add("lname") 
    drow = dt.NewRow 
    drow("fname") = TextBox1.Text 
    drow("mname") = TextBox2.Text 
    drow("lname") = TextBox3.Text 
    dt.Rows.Add(drow) 

    GridView1.DataSource = dt 
    GridView1.DataBind() 
End Sub 
+0

感謝您的回答,但我找到了一種方法,以我的問題,即時通訊使用現在會話在GridView中添加項目。 – megastrong001 2013-02-27 14:08:15

0

這是我的代碼現在。

分部類_Default

Inherits System.Web.UI.Page 
Dim dcl As DataRowCollection 
Dim drow As DataRow 
Dim dt As New DataTable 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    binds() 

End Sub 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Page.IsPostBack = False Then 
     addcolumns() 
     GridView1.DataSource = dt 
     GridView1.DataBind() 
    End If 
End Sub 

Private Sub addcolumns() 

    dt.Columns.Add("fname") 
    dt.Columns.Add("mname") 
    dt.Columns.Add("lname") 
    Session("dtInSession") = dt 

End Sub 
Protected Sub binds() 

    If Session("dtInSession") IsNot Nothing Then 
     dt = Session("dtInSession") 
    End If 

    drow = dt.NewRow 
    drow("fname") = TextBox1.Text 
    drow("mname") = TextBox2.Text 
    drow("lname") = TextBox3.Text 
    dt.Rows.Add(drow) 

    Session("dtInSession") = dt 
    GridView1.DataSource = dt 
    GridView1.DataBind() 

End Sub 

末級

-2
## Heading ## 
    public DataTable SearchStudents(string studFirstname) 
    { 
     logOBj.conn.Close(); 
     logOBj.conn.Open(); 

     logOBj.DA = new SqlDataAdapter("Select * From STUDENT where studFirstname LIKE '%" + studFirstname + "%'", logOBj.conn); 

     logOBj.DT = new DataTable(); 
     logOBj.DA.Fill(logOBj.DT);//data adapter fills the datatable 

     return logOBj.DT; 
    }