【问题标题】:What is the proper way to use data from a grid view before data binding在数据绑定之前使用网格视图中的数据的正确方法是什么
【发布时间】:2015-11-03 06:13:29
【问题描述】:

我有一个创建数据库记录网格视图的用户控件。每条记录都有一个用于删除记录的复选框。

我的问题是page_load 事件构建了网格视图,然后删除按钮甚至触发。 deleteButton_click 事件在gridview 上循环查找复选框,但从未找到任何复选框,因为'page_load' 事件只是给了我一个干净的gridview。在重新构建网格视图之前检查复选框的最佳方法是什么?或者我可以在不查看网格视图的情况下获取选中的值吗?

Protected Sub Page_Load(...) Handles Me.Load

    'db calls and other code
    gv.DataBind()
End Sub

Protected Sub btnDelAtt_Click(...) Handles btnDelAtt.Click

    For Each grdRow As GridViewRow In gvFileViewer.Row
        Dim chkBox As CheckBox = CType(grdRow.FindControl("cbItem"), CheckBox)
        If chkBox.Checked = True Then 'this is always false thanks to page_load
            'code that does not run
        end if
    next
end sub

【问题讨论】:

  • !IsPostBack 到页面加载事件?
  • ^ 那个。确保您的页面加载事件在执行仅在页面首次加载时执行一次的操作之前检查 isPostBack。 If Not Page.IsPostBack 我相信是 VB 语法
  • @Moe 不幸的是,页面上还有其他事件可能导致页面在回发时加载,我仍然需要构建网格视图。

标签: asp.net


【解决方案1】:

正如 cmets 中所述,添加 !IsPostBack 应该可以做到。 您只需在初始调用时从数据库中加载网格,回发时无需再次获取数据。删除结束后,您将需要重新绑定网格。

     Protected Sub Page_Load(...) Handles Me.Load
        If(!Page.IsPostBack)

            'db calls and other code
            gv.DataBind()

        End Sub

        Protected Sub btnDelAtt_Click(...) Handles btnDelAtt.Click

            For Each grdRow As GridViewRow In gvFileViewer.Row
                Dim chkBox As CheckBox = CType(grdRow.FindControl("cbItem"), CheckBox)
                //Delete your record
                end if

            next
            //Rebind grid
        end sub

【讨论】:

  • 页面上有几个事件会导致它回发(它是一个动态表单)。如果我不每次都绑定它,网格是否仍然存在缓存数据?
  • 这就是视图状态的用途。但是既然你会在删除方法之后重新绑定网格就足够了。
  • 谢谢,我(显然)是 .net 的新手以及 viewstate 的工作原理,但我会弄清楚的。所以我应该能够在not isPostBack 时获取并绑定getAttachments() 中的数据,并再次忽略gridview,直到我需要添加/删除一行,然后在预计grid view 发生变化时再次调用getAttachments()。整洁的。我会在上午试试并报告!谢谢!
  • 是的。如果您需要更多详细信息,请告诉我,很乐意提供帮助。
  • 实现这一点的最简单方法是创建一个绑定网格的方法,该方法将调用数据库获取您的数据并将其绑定到网格中。在初始加载时调用此方法 (!Page.IsPostBack) 并在删除后或需要绑定网格时再次调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
相关资源
最近更新 更多