【问题标题】:Gridview data not refreshingGridview数据不刷新
【发布时间】:2013-04-08 18:08:17
【问题描述】:

我有一个 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 将是正确的 - 但这并不像我预期的那样工作。

谁能告诉我哪里出了问题以及如何纠正这个问题?

【问题讨论】:

  • 在您的 gv_RowCommand 函数中,这一行: gv.DataSource = _DirectorAddList 实际上是指我猜的 MyListObject ? gv.DataSource = MyListObject
  • 移除更新面板并进行正常的页面刷新,看看是否能得到想要的结果。这样你就可以找出正确的原因。
  • 删除更新面板似乎指向我的代码,但我有点迷失了错误可能在哪里? MyListObject 是一个共享私有变量,但如果不是,那么它只记得添加到 gridview 的最后一项?
  • 或者如果可能的话,我怎样才能获得 RowCommand 事件下的 RowIndex?

标签: asp.net vb.net gridview


【解决方案1】:

gridviewupdatepanel 中吗?如果是,该面板也应该刷新。

【讨论】:

  • 也是的,他说的是对的。如果您能够在调试模式下运行并在更新数据源上的数据绑定后询问 gridview 对象,如果您的 gridview 看起来像您期望的那样,则很可能您也需要更新它所在的 UpdatePanel。
  • 我更新了上面的代码以显示它现在的样子。将更新面板代码添加到 RowCommand 事件后没有区别。除非有人能看出明显的错误,否则我会在调试模式下仔细检查值?
【解决方案2】:

我添加了 CommandArgument='' 这解决了问题,因为我随后删除了用户单击的行。

【讨论】:

    【解决方案3】:

    顺便说一句,我可能会在客户端使用 ajax 脚本管理器而不是在后面的代码中处理更新的内容。省去头痛。上面可能会正确更新更新面板,但客户端可能不存在 ajax 管道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2011-04-13
      相关资源
      最近更新 更多