2016-04-17 150 views
2

我有一個下拉列表,其中有一個類別列表&這是一個用於刷新下拉列表項目的鏈接。刷新/重新綁定一個dropdownlist asp.net MVC

@Html.DropDownList("CategoryNameItemNameBinding", Model.CatgegoryNameItems) 

<a href="javascript:void(0)" id="opener" onclick="openDialog('Category',this)">Refresh Category List</a> </span> 

鏈接打開一個小按鈕,當點擊一個按鈕時,更新綁定了dropdownlist的數據庫表。

問題是,雖然數據庫表已更新,但下拉列表不會顯示新項目,直到頁面手動刷新或我導航離開並返回頁面。

我不想刷新/重新加載整個頁面。如何刷新下拉列表以反映新項目。

感謝

+0

您可以使用ajax調用一個控制器方法來查詢數據庫返回的項目以填充到下拉列表中,或者更好(因爲您已經知道從您彈出的視圖中添加的新值),只需使用JavaScript追加一個新的選項,基於彈出的數據 –

+0

您好斯蒂芬,謝謝你的回覆。我是Mvc的新手,所以你可以發佈一個Ajax調用樣本。我發現了很多例子,但不知道哪一個是正確的路要走。 – Robin

回答

0

你的Ajax調用將

$("#linkId").on('click', function (event) { 
      var url = "GetList"; 
      $.ajax({ 
       data: {}, 
       type: 'POST', 
       cache: false, 
       dataType: 'json', 
       url: url, 
       success: function (result) { 
        $("#dropDownId").empty(); 
        $("#dropDownId").append('<option value="">Select One</option>'); 
        $.each(result, function (i, item) { 
         $("#AddItemItemId").append('<option value="' + item.Value + '">' + 
          item.Text + '</option>'); 
         // here we are adding option for States 
        }); 
       }, 
       error: function (ex) { 
        alertify.alert('We face some technical difficulties. Hello World'); 
       } 
      }); 
      event.preventDefault(event); 
     }); 

和後端C#代碼會喜歡

[HttpPost] 
    public JsonResult GetList() 
    { 

     var itemlist = _itemManager.GetItems(); 
     var itemList = itemlist.Select(item => new SelectListItem { Text = item.ItemName+" - "+item.PowerName, Value = Convert.ToString(item.Id) }).ToList(); 
     return Json(new SelectList(itemList, "Value", "Text")); 
    } 

希望這會幫助你。快樂編碼

+0

謝謝你的工作,非常感謝。 – Robin

+0

感謝您的讚賞 –