首页 > 解决方案 > 使用按钮 asp.net VB 将行添加到数据表?

问题描述

我想知道如何使用按钮将行添加到已经填充的数据表中。我到目前为止的代码是这个......

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim dt As New DataTable("Dt")
        dt.Columns.Add("test1")
        dt.Columns.Add("test2")
        dt.Columns.Add("test3")

        GridView1.DataSource = dt
        GridView1.DataBind()

    End Sub

    Protected Sub btnadd_Click(sender As Object, e As EventArgs) Handles btnadd.Click

        Dim dt As New DataTable

        dt.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text)
        GridView1.DataSource = dt
        GridView1.DataBind()

    End Sub

标签: asp.netvb.netdatatable

解决方案


这个对我有用。因为我是否存储DataTableinViewState以便我可以在DataTablewhen it中引用当前关联的数据postback。您正在初始化方法DataTablePage_Load包括DataTable. 当您单击 btnadd 按钮时,您不会获得现有的DataSource. 如果您在方法中分配dtViewState("DataSource ")在方法中Page_Load再次声明DataTable,那么它将起作用,因为以前您现在得到了。最后我想说的是, 不记得你在之前的页面渲染中设置的。btnAdd_ClickDim dt As DataTable = DirectCast(ViewState("DataSource "), DataTable)DataSourceDataSourceDataSource

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

            Dim dt As New DataTable("Dt")
            dt.Columns.Add("test1")
            dt.Columns.Add("test2")
            dt.Columns.Add("test3")
            GridView1.DataSource = dt
            GridView1.DataBind()
            ViewState("DataSource ") = dt

        End Sub

        Protected Sub btnadd_Click(sender As Object, e As EventArgs) Handles btnadd.Click

            Dim dt As DataTable = DirectCast(ViewState("DataSource "), DataTable)
            GridView1.DataSource = dt
            GridView1.DataBind()
            dt.Rows.Add("Hi1", "Hi2", "Hi2")
            GridView1.DataSource = dt
            GridView1.DataBind()

        End Sub

推荐阅读