我正在Page_PreRender
上实现过滤器,检查哪些行符合我设置的条件。
Protected Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
If Session("Hotel") <> "Todos" Then
CType(GridView1.HeaderRow.Cells(1).FindControl("DropDownList2"), DropDownList).SelectedValue = Session("Hotel")
End If
If Session("Departamento") <> "Todos" Then
CType(GridView1.HeaderRow.Cells(3).FindControl("DropDownList1"), DropDownList).SelectedValue = Session("Departamento")
End If
If Session("Estado") <> "Todos" And Session("Estado") <> "" Then
CType(GridView1.HeaderRow.Cells(7).FindControl("DropDownList3"), DropDownList).SelectedValue = Session("Estado")
End If
ApplyFilters()
End Sub
过滤器保存在会话变量中(在DropDownList
的{{1}}导致回发),然后我得到(如上所示)并设置他们所对应的任何字段,无论如何他们在回发之前。完成此操作后,将通过调用SelectedIndexChanged
重新应用过滤器。
如果您想知道过滤器的工作原理:
ApplyFilters()
在切换到另一个 For Each Row As GridViewRow In GridView1.Rows
If CType(Row.Cells(3).FindControl("Label3"), Label).Text <> Filtro Then
Row.Visible = False
End If
Next
页面之前,所有内容似乎都运行正常,过滤器未重新应用,并且所有对应的GridView
s'值都设置为默认值。刷新页面后,一切都恢复正常。似乎更改页面不会触发DropDownList
。
在这种情况下,我应该在哪里实施过滤器?
答案 0 :(得分:0)
切换到GridView
赢取的Page_PreRender
中的其他页面,以便您想要编辑GridView
的内容以进行过滤使用{{1} }。
GridView_PreRender