2012-06-18 108 views
4

我有兩張桌子,分別是州和國家。這兩個都是我查看頁面中的下拉菜單。 我使用獨立查詢顯示每個人的下拉值。 在表狀態我有stateid和countryid。 我需要根據國家選擇過濾狀態值。 ,我甚至有一個主表名爲Table其中包括州和國家 以下的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查詢? 請告訴我怎麼做 謝謝

回答

14

這可以用不同的方式完成。一種方法是讓服務器在第一個下拉列表發生更改時通過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調用新的控制器操作。然後它使用返回值來更新'State'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); 
      } 
     }); 
    }); 
}); 

+0

你好,這是不錯的,但我會怎麼做這一個錶行,其中每個表已TD細胞唯一的ID內。或者,在表格行內,我將如何獲得相同的行col選定值,以前的選定值進行過濾 – transformer

相關問題