在转发器控制中应用过滤器 [英] apply filter in repeater control

查看:64
本文介绍了在转发器控制中应用过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有转发器控制,我从数据库中获取记录,所以我有多个记录,我想通过使用下拉列表过滤我的结果。我正在使用ajax。如果我选择第一个下拉菜单然后根据第一次和第二次下载过滤结果,当我选择第二个下拉菜单时,它仅根据秒获取结果,但我想如果已经选择了一个下拉列表,那么在选择第二个下拉列表时它应该从之前的下拉结果中过滤。怎么做...

我的搜索下拉列表在母版页中,其中只有类别下拉列表是必须选择的,结果显示在result.aspx页面中,我的过滤器下拉列表也在结果页面中。

母版页代码:

I have repeater control and i am fetching records from database, so i have number of records and i want to filter my result by using dropdowns. I am using ajax. If i select first dropdown then it filter result according to first and again when i select second dropdown then it fetch result according to second only, but i want if one dropdown is already selected then on selecting second dropdown it should filter from previous dropdown result. How to do it...
My search dropdowns are in master page and among these only category dropdown is compulsory to select and result shows in result.aspx page and also my filter dropdowns are in result page.
master page code:

<asp:DropDownList ID="dd_state" runat="server" CssClass="dropdownstyle2" >
            </asp:DropDownList>

            <asp:TextBox ID="txt_pincode" runat="server" CssClass="dropdownstyle3" value="Pincode" Text="" onKeyUp="numericFilter(this);" maxlength="6"

            onFocus="if(this.value==this.defaultValue) this.value=''; " onBlur="if(this.value=='') this.value=this.defaultValue;"></asp:TextBox>

            <asp:DropDownList ID="dd_category" runat="server" CssClass="dropdownstyle4" 

                AutoPostBack="True" onselectedindexchanged="dd_category_SelectedIndexChanged">
            </asp:DropDownList>

            <asp:DropDownList ID="dd_subcategory" runat="server" CssClass="dropdownstyle5" >
            </asp:DropDownList>

            <asp:Button ID="but_go" runat="server" Text="Go" CssClass="gobuttonstyle" OnClientClick="return validate();" 

                onclick="but_go_Click"/>




    protected void but_go_Click(object sender, EventArgs e)
{
    Session["country"] = 1;
    Session["state"] = dd_state.SelectedValue;
    Session["pincode"]  = txt_pincode.Text;
    Session["category"] = dd_category.SelectedValue;
    Session["subcategory"] = dd_subcategory.SelectedValue;
    Response.Redirect("Results.aspx");
}



Result.aspx.cs


Result.aspx.cs

protected void BindRepeaterData()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("sps_searchresult", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@country", 1);
        cmd.Parameters.AddWithValue("@state", state);
        cmd.Parameters.AddWithValue("@pincode", pincode);
        cmd.Parameters.AddWithValue("@category", category);
        cmd.Parameters.AddWithValue("@subcategory", subcategory);
        
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        rep_results.DataSource = ds;
        rep_results.DataBind();
        con.Close();
    }




ALTER PROCEDURE [dbo].[sps_searchresult]
	@country nvarchar(10),
	@state nvarchar(20),
	@pincode nvarchar(10),
	@category nvarchar(10),
	@subcategory nvarchar(20)
	
AS
BEGIN
	
	if(@state='Select State' and @pincode='Pincode' and @subcategory='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category
	end
	
	if(@state='Select State' and @pincode='Pincode' and @subcategory!='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and subcategory=@subcategory
	end
	
	if(@state='Select State' and @pincode!='Pincode' and @subcategory='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and pincode=@pincode
	end
	
	if(@state='Select State' and @pincode!='Pincode' and @subcategory!='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and pincode=@pincode and subcategory=@subcategory
	end
	
	if(@state!='Select State' and @pincode='Pincode' and @subcategory='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and state=@state
	end
	
	if(@state!='Select State' and @pincode='Pincode' and @subcategory!='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and state=@state and subcategory=@subcategory
	end
	
	if(@state!='Select State' and @pincode!='Pincode' and @subcategory='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and state=@state and pincode=@pincode
	end
	
	if(@state!='Select State' and @pincode!='Pincode' and @subcategory!='Select Sub-Category')
	begin
	select r.*, s.s_name, CASE iam WHEN 1 THEN 'Professional/Business' ELSE 'Individual' End as iamdetail, substring(description,1,200)+'...' AS shortdescription, substring(title,1,40) AS shorttitle from tbl_adregister r INNER JOIN tbl_state s ON r.state = s.s_id 
	where country=@country and category=@category and state=@state and pincode=@pincode and subcategory=@subcategory
	end
	
END



过滤器下拉列表在结果页面:


filter dropdowns at result page:

<asp:DropDownList ID="dd_state" runat="server" AutoPostBack="True"
onselectedindexchanged="dd_state_SelectedIndexChanged" ></asp:DropDownList>
<br/>
<asp:DropDownList ID="dd_category" runat="server" AutoPostBack="True"
onselectedindexchanged="dd_category_SelectedIndexChanged"></asp:DropDownList>
<br/>
<asp:DropDownList ID="dd_subcategory" runat="server" AutoPostBack="True"
onselectedindexchanged="dd_subcategory_SelectedIndexChanged"></asp:DropDownList>

推荐答案

这并不复杂,你几乎是正确的。现在这个想法,

像你一样搜索State和Pin Code,现在可以有两种情况:

1.更新第一个结果而不是更新结果第一个+第二个下拉

2.让用户选择第一个和第二个,然后点击搜索以更新结果。



您需要将两个参数传递给SQL Query(每个下拉列表一个)。此外,您还可以添加检查存储过程以检查是否提供参数的值,以便进行单次下拉搜索。



如果想法,请告诉我你不清楚。
This is not that complex and you are almost in right direct. Now here is the idea,
Like you to search for State and than Pin Code, Now there can be 2 situations:
1. Update result for first and than update for First + second drop down
2. Let user to select First and Than 2nd and than click search to update result.

For both the case you need t pass the two parameters to SQL Query(one for each drop-down). Also you can add check in your stored procedure to check if value for the parameter is supplied or not in case of single Drop-down search.

Let me know if idea isn't clear to you.


这篇关于在转发器控制中应用过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆