это работает для меня. Потому что я храню 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