在使用apache cordova phonegap开发Android应用程序时,我想在页面加载时绑定多个下拉列表。
我使用web API控制器方法获取数据代码,如下所示:
public DataSet GetDDL()
{
DataSet ds = new DataSet();
try
{
GetCompany user = new GetCompany();
con = new SqlConnection(constr);
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_ONLINE_APPLICATION_DROPDOWN_FILL";
con.Open();
da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch (Exception ex)
{
// lblMsg = ex.Message();
}
finally
{
con.Close();
con.Dispose();
}
return ds;
}
获取数据
{"Table":[{"intDist_Id":664,"vc_Dist_Name":"---"}, {"intDist_Id":14,"vc_Dist_Name":"Adilabad"}, {"intDist_Id":508,"vc_Dist_Name":"Agra"}],
"Table1":[{"intCity_Id":600,"vcCity_Name":"--"}, {"intCity_Id":503,"vcCity_Name":"Aarmori"}]}
我想阅读两个表:填写下拉列表
Jquery代码就像
var uri = 'http://localhost:6584/api/ChangeOfName/Getddl';
var testDdl1 = $('#ddDistrict');
var testDdl2 = $('#ddCity');
$.getJSON(uri)
.done(function (data) {
$.each(data, function (key, item) {
if(key=="Table")
{
var option = $("<option/>");
option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
testDdl.append(option);
}
})
$.each(data, function (key, item) {
if(key=="Table1")
{
var option = $("<option/>");
option.attr("value", item.intCity_Id).text(item.vcCity_Name);
testDdl2.append(option);
}
})
}
)
但发现'item.intDist_Id'未定义。为什么呢?
答案 0 :(得分:1)
Javascript将对象视为C#中的词典。所以jQuery每个都循环通过JSON中的键/值对。在这种情况下:Table和Table1及其各自的数组值。该数组没有属性intDist_Id
,因此它返回undefined。
您必须遍历items数组值以获取具有属性intDist_Id
等的实际对象。
$.each(data, function (key, items) {
$.each(items, function(index, item) {
if(key=="Table")
{
var option = $("<option/>");
option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
testDdl.append(option);
}
else if(key=="Table1")
{
var option = $("<option/>");
option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
testDdl.append(option);
}
});
});
答案 1 :(得分:0)
你需要做这样的事情:
for (var i=0; i<data.length; i++) {
alert("Your Results: " + data[i].pk_records_id);
// you need to write each key name here
}