我有这个:
@Html.DropDownList("centres", (List<SelectListItem>)ViewData["centres"])
我需要使用JQuery在程序运行时使用SQL输入数据库的数据进行更新:
jQuery(function ($) {
jQuery("body").on('click', "#create", function () {
$.getJSON("/Centres/updateList", function (results1) {
// perform update here using results1 from jsonresult updateList in Controller class
});
});
});
results1是我的MVC控制器类的List。我希望能够使用这些新结果编辑我现有的html下拉列表。目前它显示了一个selectListItems列表,但是在控制器类的updateList中,我正在创建一个新列表,基于我刚创建的新中心。我的Controller类方法如下所示:
public JsonResult updateList()
{
List<SelectListItem> centres = new List<SelectListItem>();
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Michael\Documents\Visual Studio 2012\Projects\OneEightyWebApp\OneEightyWebApp\App_Data\OneHoldings.mdf;Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT Centre.Centre_Name, Count(Shop_No) AS Shop_Count FROM Centre LEFT JOIN Space ON Centre.Centre_Name = Space.Centre_Name GROUP BY Centre.Centre_Name;", conn);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
conn.Open();
da.Fill(dt);
conn.Close();
for (int i = 0; i < dt.Rows.Count; i++)
{
centres.Add(new SelectListItem { Text = dt.Rows[i].ItemArray.GetValue(0).ToString(), Value = dt.Rows[i].ItemArray.GetValue(1).ToString() });
}
return Json(centres, JsonRequestBehavior.AllowGet);
}
有什么想法吗?
答案 0 :(得分:2)
您可以使用jquery
重建下拉列表$.getJSON("/Centres/updateList", function (results1) {
//Clear out the old values
$("#centres").empty();
//Add the input items back in
$.each(results1, function (key, val) {
$("#centres").append($("<option></option>").attr("value", val.Value).text(val.Text));
});
});
使用MVC的一个优点是它生成的html非常简单,可以使用简单的jQuery命令轻松复制。
答案 1 :(得分:0)
您可以重复使用attr功能,因此您可以通过
预先设置选择if(val.Selected) {
$("#centres").append($("<option></option>")
.text(val.Text)
.attr("value", val.Value)
.attr("selected", "selected"));
}