我有一个用户控件,可以创建数据库记录的网格视图。每条记录都有一个用于删除记录的复选框。
我的问题是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
答案 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