我正在尝试进行一系列下拉菜单,其中各国的变化将获得状态并绑定到显示州的另一个下拉列表。 我查看了kendoui网站上提供的文档,其中记录了级联的方式 使用它的事件(CascadeFrom等等。)但我不想这样做。 因为它是数据库的双重旅行。首先加载页面后,它绑定国家(呼叫数据库和获取国家),然后 它在国家改变后对国家具有约束力。
但我以不同的方式做了。我绑定国家下拉列表 在页面加载,所以我保存了一个数据库,用于加载 页面加载后的国家,但我想知道如果我可以调用更改 国家通过以下方式下拉,然后通过json对象绑定状态。
这是在视图页
中成功绑定的国家/地区下拉列表 @(Html.Kendo().DropDownListFor(model => model.Country)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Model.CountriesTemp)
)
以下是国家名单,该名单将根据国家/地区下拉列表的变化进行记录。
@(Html.Kendo().DropDownListFor(model => model.State)
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Model.States))
对于绑定国家和页面加载状态,我已在控制器中完成此操作。
public class HomeController : Controller
{
public ActionResult Registration()
{
RegistrationModel Model = new RegistrationModel();
Model.CountriesTemp = new SelectList(ObjService.GetCountries(), "CountryID", "Country_Name");
Model.States = new SelectList(ObjService.GetStates(), "Id", "StateName");
return View(Model);
}
public JsonResult GetStatesForCountry(string CountryId)
{
RegistrationService ObjService = new RegistrationService();
var StatesList =ObjService.GetStatesForCountries(Convert.ToInt32(CountryId));
return Json(new { JsonStates = StatesList });
}
}
这是我的模特::
public SelectList CountriesTemp { get; set; }
public SelectList States { get; set; }
我已经成功绑定了两个下拉列表,现在我想在我的视图页面中执行下面脚本编写的级联:
$(document).ready(function () {
$("#Country").change(function () {
var val = $("#Country").val();
$.post("/Home/GetStatesForCountry", { CountryId: val }, function (Response) {
var States = $("#State").data("kendoDropDownList");
});
});
});
函数“GetStatesForCountry”已在上面的控制器中定义,但我对如何使用返回的json对象并绑定显示“状态”的kendodropdownlist感到困惑。
答案 0 :(得分:4)
您需要获取状态下拉列表,然后按如下方式设置从其返回的数据源:
var dropdownlist = $("#State").data("kendoDropDownList");
dropdownlist.setDataSource(Response.JsonStates);
更多信息:
http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#methods-setDataSource
答案 1 :(得分:3)
我可以使用下面的代码来完成此操作。以上答案仅供参考。
$.post("/Home/GetStatesForCountry", { CountryId: val }, function (Response) {
//var States = $("#State").data("kendoDropDownList");
//States.setDataSource(Response.JsonStates);
$("#State").kendoDropDownList({
dataTextField: "StateName",
dataValueField: "Id",
dataSource: Response.JsonStates
});
});