【发布时间】:2016-07-19 20:21:17
【问题描述】:
我使用 ListView 控件从数据库中获取产品列表。我还将结果存储在 viewstate 中。现在从复选框应用过滤器以获取精炼数据我想知道如何使用 viewState 值?
例如如果页面加载时在音乐类别中找到 10 个产品。现在,如果用户应用过滤器(蓝牙),则只应显示音乐中且具有蓝牙的产品..
现在它正在工作就像在页面加载时获取音乐类别然后如果我检查蓝牙过滤器,那么所有与音乐无关的蓝牙产品都会出现。
Private Sub shop_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim pageName As String = Me.Page.RouteData.Values("category").ToString()
if not Me.isPostback Then
Try
query = select * from products where category = '"+pageName+"'
Dim conString As String = ConfigurationManager.ConnectionStrings("conio").ConnectionString
Dim con As New MySqlConnection(conString)
Dim cmd As New MySqlCommand(query)
con.Open()
Dim da As New MySqlDataAdapter()
cmd.Connection = con
da.SelectCommand = cmd
Dim dt As New DataTable()
da.Fill(dt)
ViewState("Data") = dt
products.DataSource = dt
products.DataBind()
catHeading.Text = pageName
itemCount.Text = dt.Rows.Count.ToString
con.Close()
Catch ex As Exception
Response.Write(ex)
End Try
End If
End Sub
过滤应用代码
Private Sub priceFilter_SelectedIndexChanged(sender As Object, e As EventArgs) Handles priceFilter.SelectedIndexChanged
'buildWhereClause()
Dim price As String = priceFilter.SelectedValue.ToString()
Dim dt As DataTable = DirectCast(ViewState("Data"), DataTable)
Dim dr As DataRow() = dt.[Select]((Convert.ToString("category='") & price) + "'")
products.DataSource = dt
products.DataBind()
itemCount.Text = dt.Rows.Count.ToString
End Sub
我只想当用户应用任何过滤器时,它应该从视图状态(数据)而不是整个表检查。
【问题讨论】:
标签: asp.net vb.net listview filtering