如何根据以前的选择筛选下拉列表(How to filter drop down list based

2019-06-25 14:11发布

我有两个表,即国家和Country.These两者在我看来页面下拉菜单。 我使用的是独立的查询显示他们每个人的下拉值。 在表州我有STATEID和countryid。 我需要根据国家选择过滤状态值。 我甚至有一个名为表主表,由州和国家以下的IDS是我用来显示的方式,

enter code here

//要获得状态值

var query = (from i in dbContext.countries

                     join j in dbContext.States on i.Country_id equals j.Country_id

                     where j.State_id >= 0
                     select new
                     {
                         state = j.State_name}).ToArray//To get state values

在此处输入代码

  var str = (from li in dbContext.countries

                           where li.Country_id >= 1
                           select new
                           {

                               country = li.Country_name}).ToArray();//To get country

我怎么能查询是书面查询过滤全光照主表“表”。我现在面临的问题的值滤波这可能使用LINQ查询? 请建议我如何做到这一点感谢

Answer 1:

这可以用不同的方式来完成。 一种方法是让服务器当第一个下拉改为通过Ajax返回的有效选项的过滤列表。

例如,假设这样的场景:有两个DropDownLists图。 一个与国家和其他各国。 直到一个国家选择与各国的DropDownList默认为空和残疾人。

所以,你可以在你的控制器此操作:

public ActionResult Index()
{
    ViewBag.Country = new [] {
        new SelectListItem() { Text = "Venezuela", Value = "1" },
        new SelectListItem() { Text = "United States", Value = "2" }
    };
    return View();
}

这种观点:

<div class="editor-field">
    @Html.DropDownList("Country")
    @Html.DropDownList("State", Enumerable.Empty<SelectListItem>(), "States", new { @disabled = "disabled" })
</div>

现在,在你的控制器中添加一个POST操作。 它接收到的选择的国家的ID,并返回包含状态的过滤列表JSON:

[HttpPost]
public ActionResult StatesByCountry(int countryId)
{
    // Filter the states by country. For example:
    var states = (from s in dbContext.States
                  where s.CountryId == countryId
                  select new
                  {
                      id = s.Id,
                      state = s.Name
                  }).ToArray();

    return Json(states);
}

的最后一件事是客户端代码。 这个例子使用jQuery和建立对国家下拉这就要求通过Ajax的新控制器动作变化事件监听器。 然后,它使用返回的值更新“国家”的DropDownList。

$(document).ready(function () {
    $('#Country').change(function () {
        $.ajax({
            url: '/Home/StatesByCountry',
            type: 'POST',
            data: { countryId: $(this).val() },
            datatype: 'json',
            success: function (data) {
                var options = '';
                $.each(data, function () {
                    options += '<option value="' + this.id + '">' + this.state + '</option>';
                });
                $('#State').prop('disabled', false).html(options);
            }
        });
    });
});



文章来源: How to filter drop down list based on previous selection