透過 JQuery ajax call codebehind method 刷新 DropDownList 的選項為範例。
首先,這是 Server side 取回第二個下拉選單資料的方法
[WebMethod]
public static string UpdateDropDownListSpecies(string family)
{
string json = "[]";
if (family == "Cat")
{
json = JsonConvert.SerializeObject(_cats);
}
else if (family == "Dog")
{
json = JsonConvert.SerializeObject(_dogs);
}
return json;
}
要注意- 要 [WebMethod],其實正規來說這種應該寫在 WebService,寫在 aspx 算偷懶。
- 需要是 static 的,所以取用的資料來源也要注意範圍。
Client side
$.ajax({
type: "POST",
url: "Default.aspx/UpdateDropDownListSpecies",
data: "{'family':'" + family + "'}",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#DropDownList_species").empty();
$.each(JSON.parse(data.d), function (i, value) {
$("#DropDownList_species").append($("<option>").text(value).attr("value", value));
});
},
error: function (data) {
}
});
記得- 要有 contentType
- 取回來的 json 要先反解回物件才能用
- 取回來的內容在 property d 下
Event validation 有問題,請參考 這篇,這次實作是採用保哥提的解。
Example: Github

沒有留言:
張貼留言