Gridview数据不刷新
问题描述:
我有一个GridView,它有一个List(Of MyObject)作为它的数据源。Gridview数据不刷新
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值现在不同步,我将数据源设置为无,并重新绑定它,以便我将值重置并且ID将是正确的 - 但这不符合我的预期。
任何人都可以告诉我哪里会出错,以及如何纠正这个问题?
答
我加了CommandArgument ='<%#Container.DataItemIndex%>'它解决了问题,因为我当时删除了用户点击的行。
答
就像一个侧面说明,我可能会处理在客户端使用ajax脚本管理器更新的内容,而不是在后面的代码中进行更新。节省头痛。以上可能会更新正确的更新面板,但ajax管道可能不在客户端。
在你的gv_RowCommand函数中,这一行: gv.DataSource = _DirectorAddList 实际上是指MyListObject我猜? gv.DataSource = MyListObject – Cortright 2013-04-08 18:33:15
是的,这是一个错字。 – Computer 2013-04-08 18:55:43
删除更新面板并执行正常页面刷新,以查看是否获得了期望的结果。这样你可以找出正确的原因。 – 2013-04-08 19:00:09