Добавить строки в Dataatable с помощью кнопки asp.net VB? - PullRequest
0 голосов
/ 05 июля 2018

Мне интересно, как добавить строки в уже заполненный набор данных с помощью кнопки. код, который у меня пока есть, это ...

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

1 Ответ

0 голосов
/ 05 июля 2018

это работает для меня. Потому что я храню DataTable в ViewState, чтобы я мог ссылаться на текущие данные, связанные с DataTable, когда оно postback. Вы инициализируете метод DataTable в Page_Load, включая заголовок DataTable. Когда вы нажимаете на кнопку btnadd, вы не получаете существующий DataSource. Если вы назначите dt в ViewState("DataSource ") в Page_Load методе и объявите снова DataTable в btnAdd_Click методе, подобном Dim 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...