【问题标题】:Dropdownlist selection should auto populate textboxes? MVC 4下拉列表选择应该自动填充文本框吗? MVC 4
【发布时间】:2014-03-26 05:21:07
【问题描述】:

我正在尝试使用 jquery 在下拉列表选择时获取数据。 jquery 方法正在触发,对返回 JSON 的控制器的相应方法调用也在执行其工作,即返回一些客户数据列表但我不知道如何绑定到文本框。

最初我致力于级联下拉:

我的代码如下所示:国家/地区

在视图中:

 @Html.DropDownList("state",ViewBag.stateid as SelectList,"select a state",new {id="state"}) 
 @Html.Label("District")
<select id="district"  name="District"></select>

控制器中的相应 JSON 返回:

 public JsonResult DistrictList(string id)
        {
            int identity = Convert.ToInt32(id);
            dbforentityEntities1 db = new dbforentityEntities1();
            var district = db.districts.Where(m => m.stateid == identity);
            return Json(new SelectList(district.ToList(), "districtid", "districtname"), JsonRequestBehavior.AllowGet);
        }

但现在我有一个不同的场景,比如我想显示我从 Controller 获取的列表到视图中,并且数据应该填写在我创建的文本框中

到目前为止我的代码:

查看部分

   <script type="text/jscript">
        $(function ()
        {
            $('#GETEDIT').click(function ()
            {
               $.getJSON('/Home/FetchData/'+$('GETEDIT').val(),function(data)
                    {
                    $.each(data, function (i, **?????** )

//next here i need to iterate to the data and fill it in respective textboxes 
                });
$('#district').html(**????**);
            });
        });
    });
</script>

???? :在上面的代码中意味着 *我不知道要保留什么,即我有多个文本框 *

任何想法谢谢你的时间

问候

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    这样试试,

     for (var i = 0; i < listItems.length; i++) {
      var elements = "<input type='text' id='txt" + listItems[i].districtid+ "'class='required' name='text_"+listItems[i].districtname+"'/><br/></br>";
       $("#yourSelect").append(elements);
       }
    
     $.each(data, function (i, district) {
      var elements = "<input type='text' id='txt" + district[i].districtid+ "'class='required' name='text_"+district[i].districtname+"'/><br/></br>";
      $("#yourSelect").append(elements);
    });
    

    查看

    <div id="yourSelect"></div>
    

    这是按钮点击绑定动态文本框的静态演示供您参考:http://jsfiddle.net/n7Nr2/1/

    【讨论】:

    • 如果有 4 个列表项意味着这会将列表数据填充到已经创建的相应 4 个文本框吗?其他任何建议朋友
    • @supercool 对不起,我不明白你的评论。所以你需要将你的 json 结果填充到文本框的右边。表示有 4 个列表,然后有四个文本框显示您各自的数据。
    • 好吧,您正在通过 for 循环从控制器中返回的 json 方法中检索数据,对。后来我希望for循环将我们得到的值分配给预先创建的文本框,并且在视图中将具有不同的ID。您使用 **
    • @supercool 嗨,我刚刚更新了我的代码,希望对您有所帮助,如果您有任何疑问,请告诉我。
    • 嗨,伙计,从外观上看,代码看起来很酷,但是我应该在哪里添加 for 循环。在我上面提到的代码中,如何适应您使用的列表元素?我是否需要添加 $.each(data, function (i, ?????)
    【解决方案2】:

    尝试追加:

    $.each(data, function (i, district) {
        $('#yourSelect').append($('<option>', { 
            value: district.value,
            text : district.text 
        }));
    });
    

    【讨论】:

    • 这样我会在单独的文本框中获取数据,即基于列表项计数,'n'没有文本框会创建 aa 吗?太抱歉了,很抱歉给你带来了麻烦
    • @supercool 您需要提供更多关于您要达到的目标的信息,但信息不足。
    • 编辑过一次检查。我需要提供任何进一步的澄清,我很乐意提供详细信息。您的时间
    【解决方案3】:

    如果我理解正确,这就是你所需要的。

    假设预先创建的文本框

    <input type="text" id="tb1" />
    <input type="text" id="tb2" />
    

    以返回的 JSon 格式为例

    [{"Tb1":123,"Tb2":456,"Tb3":678}]
    

    使用 $.each() 读取 json 结果

       $.getJSON('/Home/FetchData/'+$('GETEDIT').val(), function(data) {
            $.each(data, function(index) {
                $("#tb1").val(data[index].Tb1);
                $("#tb2").val(data[index].Tb2);
            });
        });
    

    【讨论】:

    • 看起来很详细,会告诉你:) Ty
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多