【问题标题】:Add rows to datatable with a button asp.net VB?使用按钮 asp.net VB 将行添加到数据表?
【发布时间】:2018-07-04 21:15:23
【问题描述】:

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

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.net vb.net datatable


    【解决方案1】:

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

     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
    

    【讨论】:

    • 如果您添加有关其工作原理和原因的解释,我会将此作为一个很好的答案。简单地说 it works for me. 并没有给 OP 任何关于它为什么起作用、他们错过了什么以及他们应该做什么的信息。并且,还要修正你的格式
    • 这行得通,但我一次只能添加一行。有没有办法不断添加更多行?
    • 没关系,我让它工作了,只需要在页面加载中更改一些东西。谢谢你们的帮助。
    • @JayV 感谢您的建议。我添加了一些描述。希望这会有所帮助。
    • @bman 很高兴您能够解决所有问题。
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 2012-07-06
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2015-05-11
    • 2020-11-02
    • 2016-09-13
    相关资源
    最近更新 更多