【问题标题】:Bind json variable data to the dropdownlist from jquery将json变量数据绑定到来自jquery的下拉列表
【发布时间】:2014-06-19 09:45:55
【问题描述】:

在我的 asp.net 网页中,我在 JavaScriptSerializer 类的帮助下准备了 JSon 字符串。 我在 RegisterStartupScript 方法的帮助下将 Json 字符串吐到了 HTML 标记中,它看起来像这样,

准备json字符串的C#.net代码,

System.Web.Script.Serialization.JavaScriptSerializer jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

List<Dictionary<string, string>> glAccts = new List<Dictionary<string, string>>();
Dictionary<string, string> row;

foreach (DataRow dr in _dtProfitCenterRawData.Rows)
{
    row = new Dictionary<string, string>();
    row.Add(dr[0].ToString(), dr[1].ToString());
    glAccts.Add(row);
}

string jsonObj = jsSerializer.Serialize(glAccts);
string script = "var glList = " + jsonObj + ";";

ClientScriptManager cs = Page.ClientScript; 
cs.RegisterStartupScript(Page.GetType(), "JSONObj", script, true);

客户端html上的glList变量长这样,

var glList = [
    { "1110005": "1110005 - X1" },
    { "1110008": "1110008 - X2" },
    { "1110011": "1110011 - X3" },
    { "1110020": "1110020 - X4" }
];

我想将此 json 字符串绑定到下拉列表控件。请建议如何执行?我尝试执行以下操作来查看对象内的数据,但它没有给我真正的值。它在警报方法中提供 [object]。

请提出解决问题的建议..

$.each(glList, function (val, text) {
    //$('#mySelect').append(new Option(text, val));
    alert(text); alert(val);                 
});

【问题讨论】:

  • 是的,我试过了,但它不适合我。我需要从变量 glList 中删除 [, ] 括号吗??
  • 他们的 JSON 数据和你的唯一区别是他们有一个 {"key1":"value", "key2":"value", "key3":"value"} 的对象,而你有一个 [{"key":"value"},{"key":"value"},{"key":"value"}] 的列表
  • 任何想法,我如何准备来自 c#.net 的 json 样式数据.. 我可以在我的 c# 代码中解决问题..

标签: c# jquery asp.net json


【解决方案1】:

在这里试试这个。如果您遍历glList,您会得到对象,但不会得到它们的属性。

function jsonTest() {
    $.each(glList, function(index, obj) {
        ($.each(obj, function (key, value) {
            $('#mySelect').append(new Option(key, value));
        }));
    });
}

【讨论】:

    【解决方案2】:

    使用JSON.Net 而不是JavaScriptSerializer 来序列化字典。

    或者您可以尝试在序列化之前强制转换为对象

    jsSerializer.Serialize((object)glAccts)
    

    【讨论】:

    • 我试过这个,但输出没有区别。我现在不能使用 JSon.NET 库..
    【解决方案3】:

    试试

     var glList = [
            { 1110005: "1110005 - X1" },
            { 1110008: "1110008 - X2" },
            { 1110011: "1110011 - X3" },
            { 1110020: "1110020 - X4" }
        ];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多