在数据绑定之前使用网格视图中的数据的正确方法是什么

时间:2015-11-02 21:43:25

标签: asp.net

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

我的问题是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

1 个答案:

答案 0 :(得分:1)

如评论中所述,添加!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