使用Json Data填充DropDownList

时间:2013-10-28 12:01:53

标签: c# asp.net json asp.net-mvc-4

我以前没有在Json上工作过,这是我的第一次,正如我所料,我想要用JsonData填充DropDown。 在这里我正在做的是我有一个Xml,我在Json转换如:

string xml = "<Root><Name>A</Name><Name>B</Name><Name>C</Name></Root>";

然后执行此操作将其转换为 JsonString

XmlDocument doc = new XmlDocument();
            doc.LoadXml(Xml);
            string jsonText = JsonConvert.SerializeXmlNode(doc);

目前我的查看就像:

<div>
        <input type="button" value="work" name="work" id="idwork" />
    </div>
    @Html.DropDownListFor(x => x.Name, new SelectList(Enumerable.Empty<SelectListItem>()), new {id="ddl_items" })

脚本

var ddl = $('#ddl_items');
    $('#idwork').on('click', function () {
                $.ajax({
                    url: url,
                    data: {},
                    type: 'post',
                    contentType: 'application/json; charset=utf-8',
                    success: function (myJSONdata) {
  $(myJSONdata.Name).each(function () {
                        ddl.append(
                            $('<option/>', {
                                value: this.ReworkTunnelName
                            }).html(this.Nome)
    ..
    ..
    });

现在我要做的是在这个JsonData的帮助下用名字填充下拉列表。 请帮忙

5 个答案:

答案 0 :(得分:1)

$.each(myJSONdata, function ()
 {
  ddl.append($("<option></option>").attr("value", this.ReworkTunnelName).text(this.Nome));
 });

修改

$.each(myJSONdata, function ()
 {
  ddl.append($("<option></option>").attr("value", this.ReworkTunnelName).attr("text",this.Nome));
 });

$.each(myJSONdata.Root, function ()
 {
  ddl.append($("<option></option>").attr("text", this.ReworkTunnelName));
 });

答案 1 :(得分:0)

您可以创建一个新的javascript函数,并将下拉列表id和json数据作为参数传递给它。

然后,您可以根据数据结构解析json数据。进一步运行循环并在select元素中添加项目。

答案 2 :(得分:0)

你可以在jQuery中使用getJSON方法:

$.getJSON("ActionMethodName", "", function (data) {
                $(data).each(function () {
                    $("<option>").val(this.ReworkTunnelName)
                                 .text(this.Nome)
                                 .appendTo("#ddl_items");
                });
});

HTML:

<select id="ddl_items">
    <option></option>
</select>

答案 3 :(得分:0)

试试这个

$.each(myJSONdata, function (index, item) {  
   $('#ddl_items').get(0).options[$('#ddl_items').get(0).options.length] = new Option(item.Text, item.Value);
});

答案 4 :(得分:0)

我最终这样做了,这很好......

$('#idRework').on('click', function () {
            $.ajax({
                url: url,
                data: {},
                type: 'post',
                contentType: 'application/json; charset=utf-8',
                success: function (myJSONdata) {
                    var obj = jQuery.parseJSON(myJSONdata);                   
                    $.each(obj.Root.ReworkTunnelName, function (index, itemData) {
                        ddl.append($('<option></option>').val(itemData).html(itemData));

                    });

                }
            });
        });