从jquery中绑定json变量数据到下拉列表
本文关键字:数据 下拉列表 变量 json jquery 绑定 | 更新日期: 2023-09-27 18:09:25
在我的asp.net网页中,我在JavaScriptSerializer类的帮助下准备了JSon字符串。在RegisterStartupScript方法的帮助下,我将Json字符串放入HTML标记中,它看起来像这样,
c# .net代码准备json字符串,
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字符串绑定到下拉列表控件。请建议如何执行?我尝试执行以下操作来查看对象内部的数据,但它没有给我真实的值。它在alert方法中给出[object]。
请建议解决问题的方法。
$.each(glList, function (val, text) {
//$('#mySelect').append(new Option(text, val));
alert(text); alert(val);
});
在这里试试。如果你迭代glList
,你得到的是对象,但不是它们的属性。
function jsonTest() {
$.each(glList, function(index, obj) {
($.each(obj, function (key, value) {
$('#mySelect').append(new Option(key, value));
}));
});
}
使用JSON。Net代替JavaScriptSerializer
序列化字典
或者您可以在序列化
之前尝试转换为objectjsSerializer.Serialize((object)glAccts)
try
var glList = [
{ 1110005: "1110005 - X1" },
{ 1110008: "1110008 - X2" },
{ 1110011: "1110011 - X3" },
{ 1110020: "1110020 - X4" }
];