Asp.net 使用单选按钮选择筛选listview行

Asp.net 使用单选按钮选择筛选listview行,asp.net,vb.net,listview,Asp.net,Vb.net,Listview,我不明白我在这里做错了什么,但我的listview没有根据选择过滤数据。一旦页面加载,它将根据母版页中选定的城市获取数据。这是工作,但当我应用另一个过滤器,它不会得到改变。在第页,我有多个过滤器 VB Private Sub-hospitals\u PreRender(发送方作为对象,e作为事件参数)处理Me.PreRender 尝试 Dim citySelector As DropDownList=Page.Master.FindControl(“位置选择器”) 如果会话(“主位置”)不算什么

我不明白我在这里做错了什么,但我的listview没有根据选择过滤数据。一旦页面加载,它将根据母版页中选定的城市获取数据。这是工作,但当我应用另一个过滤器,它不会得到改变。在第页,我有多个过滤器

VB

Private Sub-hospitals\u PreRender(发送方作为对象,e作为事件参数)处理Me.PreRender
尝试
Dim citySelector As DropDownList=Page.Master.FindControl(“位置选择器”)
如果会话(“主位置”)不算什么,那么
citySelector.Text=“Pune”
其他的
citySelector.Text=会话(“主位置”).ToString()
如果结束
query=“选择hospitalID、姓名、地址、缩略图、Known、mondayFrom、mondayTo、咨询费(来自城市,如“+”citySelector.SelectedItem.ToString+“%”
Dim cmd作为新的MySqlCommand(查询,con)
cmd.CommandTimeout=120
Dim da作为新的MySqlDataAdapter(cmd)
Dim表作为新数据表
da.填充(表格)
ViewState(“数据”)=表格
hospitals.DataSource=表
医院.数据绑定()
'countItems.Text=String.Format(table.Rows(0)(“数据计数”))
特例
响应。写入(ex)
结束尝试
端接头
私有子区域列表\u SelectedIndexChanged(发件人作为对象,e作为事件参数)处理区域列表。SelectedIndexChanged
'locationFilter.Text=areasList.SelectedItem.ToString
尝试
视图状态(“数据”)=“”
如果区域列表。选择值“全部”和服务列表。选择值“全部”和设施列表。选择值“全部”和付款列表。选择值“全部”,则
query=“SELECT*来自地址为“+”的医院列表。SelectedItem.ToString+“%”和服务为“+”服务列表。SelectedItem.ToString+“%”和设施为“%”+设施列表。SelectedItem.ToString+“%”的医院”
ElseIf areasList.SelectedValue=“All”和services list.SelectedValue“All”和facilities list.SelectedValue“All”和paymentsList.SelectedValue“All”然后
query=“SELECT*来自以下医院:“%”+servicesList.SelectedItem.ToString+“%”等服务和“%”+facilities List.SelectedItem.ToString+“%”等设施以及“%”+paymentsList.SelectedItem.ToString+“%”等付款”
其他如果区域列表。选择值“全部”和服务列表。选择值=“全部”和设施列表。选择值“全部”和付款列表。选择值“全部”,然后
query=“SELECT*来自区域名称为“%”+areasList.SelectedItem.ToString+“%”和设施为“%”+facilities List.SelectedItem.ToString+“%”的医院,以及付款为“%”+paymentsList.SelectedItem.ToString+“%”的医院”
其他如果区域列表。选择值“全部”和服务列表。选择值“全部”和设施列表。选择值=“全部”和付款列表。选择值“全部”
query=“SELECT*来自以下医院:区域名称为“%”+areasList.SelectedItem.ToString+“%”,服务为“%”+servicesList.SelectedItem.ToString+“%”,付款为“%”+paymentsList.SelectedItem.ToString+“%””
其他如果区域列表。SelectedValue“全部”和服务列表。SelectedValue“全部”和设施列表。SelectedValue“全部”和付款列表。SelectedValue=“全部”然后
query=“SELECT*来自以下医院:区域名称为“%”+areasList.SelectedItem.ToString+“%”,服务为“%”+servicesList.SelectedItem.ToString+“%”,设施为“%”+facilities List.SelectedItem.ToString+“%””
其他如果区域列表。SelectedValue“全部”和服务列表。SelectedValue=“全部”和设施列表。SelectedValue=“全部”和付款列表。SelectedValue=“全部”,然后
query=“从区域名为“%”+areasList.SelectedItem.ToString+“%”的医院中选择*”
ElseIf areasList.SelectedValue=“All”和services list.SelectedValue“All”和facilities list.SelectedValue=“All”和paymentsList.SelectedValue=“All”然后
query=“从医院中选择*,其中包括“%”+servicesList.SelectedItem.ToString+“%”
ElseIf areasList.SelectedValue=“All”和servicesList.SelectedValue=“All”以及设施列表.SelectedValue“All”和付款列表.SelectedValue=“All”然后
query=“从医院中选择*,这些医院的设施包括“%”+设施列表。SelectedItem.ToString+“%””
否则,如果区域列表。SelectedValue=“全部”和服务列表。SelectedValue=“全部”和设施列表。SelectedValue=“全部”和付款列表。SelectedValue“全部”,则
query=“SELECT*来自支付方式为“%”+paymentsList.SelectedItem.ToString+“%”的医院
其他如果区域列表。SelectedValue“全部”和服务列表。SelectedValue“全部”和设施列表。SelectedValue=“全部”和付款列表。SelectedValue=“全部”,然后
query=“SELECT*来自以下医院:区域名称为“%”+areasList.SelectedItem.ToString+“%”和服务为“%”+servicesList.SelectedItem.ToString+“%””
ElseIf areasList.SelectedValue=“All”和servicesList.SelectedValue=“All”以及设施列表.SelectedValue=“All”和付款列表.SelectedValue=“All”,然后
query=“从状态为“活动”的医院中选择*”
如果结束
Dim cmd作为新的MySqlCommand(查询,con)
Dim da作为新的MySqlDataAdapter(cmd)
Dim表作为新数据表
da.填充(表格)
ViewState(“数据”)=表格
hospitals.DataSource=表
医院.数据绑定()
特例
'响应.写入(ex)
结束尝试
端接头

你的问题取决于你在哪里做事。 代码中有很多问题。 首先,我可以建议在
onload
/
Page\u Load
你用那种方法

protected override void OnLoad(EventArgs e)
{
  base.OnLoad(e);  
  // here code executes Always on every onload
  if (Page.IsPostback)
        return;
  // here code executes only first load
  FillCombo();
  SetInitialValues();
  BindSearchResults();
}
我还建议:

  • 移动一类数据层中的所有查询
  • 偏爱
    protected override void OnLoad(EventArgs e)
    {
      base.OnLoad(e);  
      // here code executes Always on every onload
      if (Page.IsPostback)
            return;
      // here code executes only first load
      FillCombo();
      SetInitialValues();
      BindSearchResults();
    }