代码之家  ›  专栏  ›  技术社区  ›  Leonid

如何使用Jquery初始化下拉列表中的起始值

  •  0
  • Leonid  · 技术社区  · 16 年前

    六 三 一个

    我有控制器:

        DBEntity context = new DBEntity(); // My EntityModel
        public ActionResult Index()
        {
            return View();
        }
    
        public JsonResult GetStartValues()
        {
            var b = context.MyTable.ToList();
            return Json(ConvertObj(b));
        }
        private object ConvertObj(List<MyTable> lst)
        {
            var list = new object[lst.Count];
            for (int i = 0; i < lst.Count; i++)
            {
                list[i] = new { value = lst[i].MyValue, name = lst_meals[i].MyText };
            }
            return list;
        }
    

    我的问题是:如何初始化这个值作为起始值 使用jQuery . 我可以使用这样的解决方案:

        public ActionResult Index()
        {
            var model = context.MyTable.ToList()
            return View(model);
        }
    

    在.aspx中

       <select id="myDropdown" name="myDropdown"> 
       <% foreach(var obj in Model.MyTableList) {%>
       <option value="<%: obj.MyValue %>"><%: obj.MyText %></option>
       <% } %>
    

    我想通过对服务进行异步调用来填充下拉列表,但我不知道必须使用什么事件。。。如果我尝试填充下拉列表:

     $(document).ready(function () {
         $.post("/GetStartValues/", { }, function (data) {
           populateDropdown($("#[id*='myDropdown']"), data);
         });
     }
    
     function populateDropdown(select, data) {
            select.html(''); //clear all items
            $.each(data, function (id, option) {
                select.append($('<option></option>').val(option.value).html(option.name));
            });
     }
    

    但它不起作用。我想在页面加载后立即使用Jquery请求将值插入到下拉列表中。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Jeff Treuting Charlie Martin    16 年前

    您的控制器是否返回正确的Ajax?

    我不确定ConvertObj做了什么,但是假设您正确返回Ajax,那么jQuery应该可以工作。

    $.ajax({
                url: '/GetStartValues/',
                type: 'POST',
                data: {
                },
                success: function (data) {
                    $('#myDropdown').html('');
                    for (var i=0; i < data.length; i++) {
                        $('#myDropdown').append($('<option></option>').attr('value', data[0].value).text(data[0].name));
                    }
                }
            });