【问题标题】:Filter dropdown list on other filter其他过滤器上的过滤器下拉列表
【发布时间】:2011-11-29 12:49:08
【问题描述】:

嘿,伙计们,我知道它已经讨论了很多,但我仍然没有得到它的工作。

我需要的是通过几个下拉列表过滤网格视图,主要思想是“继续”过滤网格视图。我的意思是,当我从 ddl1 中选择值时,会根据 ddl1 中的选定值过滤 ddl2。

也称为级联下拉列表,但我不想(不能)使用 Ajax Control Toolkit...

还有其他解决方案吗?也许方法 protected void DropDownList2_SelectedIndexChanged(...)可以做到,但是不知道怎么用。

请帮忙 提前致谢。

【问题讨论】:

  • 如果ddl1the true autopostback ddl2 可以根据ddl1SelectedValueddl1_SelectedIndexChangedcode 中轻松构建。
  • 是的,但我还不知道所需的代码..
  • Pepys 很抱歉,这里不是索要代码的地方,这是在您编写的代码出现无法解决的问题时寻求帮助的地方。
  • 同意 ;) 以后会努力的 谢谢

标签: c# asp.net filter drop-down-menu


【解决方案1】:

请看下面。这只是给你一个想法......

DropDownList1_SelectedIndexChanged(...){
// get the ddl1 selected value
// filter the datasource used by dropdownlist2
// databind DropDownList2 
}

DropDownList2_SelectedIndexChanged(...){
    // get the ddl1 selected value 
    // get the ddl2 selected value 
    // filter the datasource used by GridView(using the DropDownList selected values)
    // databind GridView 
}

【讨论】:

  • 这更像是;)我必须尝试一下,但稍后谢谢老兄
【解决方案2】:

我建议使用 Jquery 来填充级联下拉列表。将此脚本添加到您的网页。

$(document).ready(function () {

$("#").change(function () {

var sourceddl = "<%= ddlState.ClientID %>";
var stateid = $("#<%= ddlState.ClientID %> option:selected").val();
var Stateid = { Stateid: stateid };

$.ajax({
                type: 'POST',
                url: 'YourCodeBehind.aspx/GetCounties',
                data: JSON.stringify(Stateid),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {                       
                          if (data.d) { 
                          var options = [];                     
                          if (result.d) {
                          for (var i = 0; i < result.d.length; i++) {
                               options.push('<option value="',
                                              result.d[i].countyID, '">',
                                              result.d[i].countyName, '</option>');
                            }

                            $("#<%= ddlCounty.ClientID %>").html(options.join(''));
                        }                        
                     }
                },
                error: function () {
                    alert("Error! Try again...");
                }
            });

        });

    });

这是在同一代码隐藏中的 webmethod。

[WebMethod]
public static County[] GetCounties(int Stateid)
{
    County[] countiesArr = StatesCountyModel.GetCountyForState(Stateid).ToArray();
    return countiesArr;     
}

如果您是 Jquery 新手。通过http://Jquery.com 了解如何使用它。

希望对你有帮助。

普雷文

【讨论】:

  • 没问题!你可以在这里使用我们的老朋友 javascript。看到这个forums.asp.net/t/1413113.aspx
  • 嘿嘿这看起来很酷......但我真的不明白。就像数据库连接、列等在哪里......这是否与 Gridview 一起使用,因为这是主要思想 - 让 gridview 变得合适:? p.s 很抱歉这些愚蠢的问题,但它是 java 脚本 :)
  • 没错。它的旧纯 javascript 实际上就是 Ajax 的工作方式。如果你看到一行文章。 // 发送请求 xmlHttp.open("GET", "GetProducts.aspx?CategoryID=" + pCatID, true);此 .aspx 页面将包含逻辑并将结果作为 xml 架构返回给您。您可以遍历它并填写您的孩子下拉列表。
  • 谢谢老兄,但我真的不明白这个想法.. 你能看看我上面添加的代码吗,拜托:) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多