Asp.net Gridview数据未刷新
我有一个gridview,它有一个列表(MyObject)作为它的数据源Asp.net Gridview数据未刷新,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我有一个gridview,它有一个列表(MyObject)作为它的数据源 gv.DataSource = MyListObject gv.Databind() 在templatefield下,我有一个按钮,配置为从MyListObject中删除一条记录,然后重新绑定它。要添加记录,我有以下代码 Protected Sub btnAddRecord_Click(sender As Object, e As EventArgs) Handles btnAddRecord.Click Dim
gv.DataSource = MyListObject
gv.Databind()
在templatefield下,我有一个按钮,配置为从MyListObject中删除一条记录,然后重新绑定它。要添加记录,我有以下代码
Protected Sub btnAddRecord_Click(sender As Object, e As EventArgs) Handles btnAddRecord.Click
Dim Customer As New Customer
With Customer
.Name = txtName.Text
.Surname = txtSurname.Text
.....
.ID += MyListObject.Count
End With
MyListObject.Add(Customer)
gv.DataSource = MyListObject
gv.DataBind()
End Sub
这很好,但是如果需要,我需要允许用户删除记录:
Private Sub gv_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gv.RowCommand
If e.CommandName = "Delete" Then
MyListObject.RemoveAt(e.CommandArgument)
gv.DataSource = Nothing
gv.DataBind()
gv.DataSource = MyObjectList
gv.DataBind()
upnl.UpdateMode = UpdatePanelUpdateMode.Conditional
upnl.Update()
End If
End Sub
当我点击按钮时,它会删除记录,但不会刷新数据。我的意思是,当添加记录时,我将ID分配为行ID,然后使用该ID删除记录。由于List和Gridview值现在不同步,我将数据源设置为nothing,然后重新绑定它,以便重置这些值,并且ID将是正确的-但是这并没有像我预期的那样工作
有人能告诉我哪里出了问题以及如何纠正这个问题吗?是
updatepanel
中的gridview
?如果是的话,该面板也应该刷新。作为旁注,我可能会在客户端使用ajax脚本管理器来处理更新的内容,而不是在代码中进行更新。避免头痛。上面的代码可能正确地更新了更新面板,但是客户端可能没有ajax管道 我添加了CommandArgument='',解决了问题,因为我当时正在删除用户单击的行。在gv_RowCommand函数中,这一行:gv.DataSource=\u DirectorAddList实际上是指我猜的MyListObject?gv.DataSource=MyListObject删除更新面板并进行正常页面刷新,以查看是否获得所需的结果。这样你就可以找到正确的原因了。删除更新面板似乎指向了我的代码,但我有点不知道错误可能在哪里?MyListObject是一个共享的私有变量,但如果不是,那么它只会记住添加到gridview的最后一项?或者如果可能的话,如何在RowCommand事件下获取RowIndex?当然,他说的是对的。如果您能够在调试模式下运行并在更新的数据源上的数据绑定后查询gridview对象,如果您的gridview看起来像您期望的那样,则很可能您也需要更新它所在的UpdatePanel。我更新了上面的代码,以显示它现在的样子。将更新面板代码添加到RowCommand事件后,没有任何区别。我将在调试模式下仔细检查这些值,除非有人看到明显的错误?