2013-02-27 76 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; 
    }