Gridview数据没有刷新

时间:2013-04-08 18:08:17

标签: asp.net vb.net gridview

我有一个gridview,它有一个List(Of MyObject)作为其数据源。

gv.DataSource = MyListObject
gv.Databind()

在模板字段下,我有一个按钮,配置为从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将是正确的 - 但这不会像我预期的那样工作。

有人可以告诉我哪里出错了以及如何纠正这个问题?

3 个答案:

答案 0 :(得分:1)

gridview中有updatepanel吗?如果是,那么该小组也应该刷新。

答案 1 :(得分:1)

我添加了CommandArgument ='<%#Container.DataItemIndex%>'这解决了问题,因为我正在删除用户点击的行。

答案 2 :(得分:0)

正如旁注,我可能会在客户端使用ajax脚本管理器而不是在后面的代码中执行更新。省去头痛。以上可能是正确更新更新面板,但客户端可能不存在ajax管道。