كيفية تصفية القائمة المنسدلة بناء على الاختيار السابق

أواجه جدولين هما الدولة والبلد. هذان هما قوائم منسدلة في صفحة المشاهدة الخاصة بي. أقوم بعرض قيم منسدلة لكل منها باستخدام استعلام مستقل. في حالة الجدول أواجه stateid و countryid. أحتاج إلى تصفية قيم الحالة استنادًا إلى اختيار البلد. ولدي حتى طاولة رئيسية تسمى الطاولة التي تتكون من معرفات الدولة والبلد وفيما يلي الطريقة التي اعتدت على عرضها ،

أدخل رمز هنا

// للحصول على قيم الحالة

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// للحصول على قيم الحالة

أدخل رمز هنا

  var str = (from li in dbContext.countries

                           where li.Country_id >= 1
                           select new
                           {

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

القيم

And how can i query be for filtering the القيم usin main table "table".i am facing problem in writing query for filtering Is this possible using linq query ? Please suggest me how to do this Thanks

4

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(), "States", new { @disabled = "disabled" })
</div>

الآن إضافة إجراء POST في وحدة التحكم الخاصة بك. يتلقى معرف البلد المحدد ويعيد 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 'State'.

$(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 += '
';
                });
                $('#State').prop('disabled', false).html(options);
            }
        });
    });
});
14
وأضاف
مرحباً ، هذا جيد ، لكن كيف أفعل ذلك داخل صف جدول ، حيث يحتوي كل جدول على خلايا td ذات معرف فريد. أو ، داخل صفوف الجدول ، كيف يمكنني الحصول على نفس القيمة المحددة لعمود الصف ، والقيمة المحددة السابقة لإجراء التصفية
وأضاف المؤلف transformer, مصدر