Asp.net mvc 重新加载Kendo Multiselect的数据源将创建Multiselect的新实例
在我们的项目中,我们在.js文件中创建了一个函数,用于将任何对象初始化为multiselect下拉列表。该函数接受两个参数。第一个是对象名,第二个是ajax方法加载数据的url。函数是这样的Asp.net mvc 重新加载Kendo Multiselect的数据源将创建Multiselect的新实例,asp.net-mvc,telerik,telerik-mvc,kendo-multiselect,Asp.net Mvc,Telerik,Telerik Mvc,Kendo Multiselect,在我们的项目中,我们在.js文件中创建了一个函数,用于将任何对象初始化为multiselect下拉列表。该函数接受两个参数。第一个是对象名,第二个是ajax方法加载数据的url。函数是这样的 function initializeMultiSelectCombo(comboName, url) { $("#" + comboName).kendoMultiSelect({ dataTextField: "Value", dataValueF
function initializeMultiSelectCombo(comboName, url) {
$("#" + comboName).kendoMultiSelect({
dataTextField: "Value",
dataValueField: "Id",
dataSource: {
type: "json",
transport: {
read: {
url: url,
type: "POST",
data: "json"
}
},
autoClose: false
}
});
}
要初始化对象,我调用上面的函数并传递需要显示为multiselect数据的对象名
initializeMultiSelectCombo("costCentreMulti", "/CostCentre/GetDataForComboForBranch?branchId=0");
默认情况下,我将0传递为BranchHid,以便它加载所有分支的所有成本中心。控制器中的方法如下所述:
public JsonResult GetDataForComboForBranch(int branchId)
{
var list = _unitOfWork.CostCentres
.GetListByUser(Convert.ToInt16(AppSession.Current.UserID), branchId).ToList();
var comboList = list.Select(e => new { Id = e.CostCentreID, Value = e.CostCentre, Column2 = e.BranchLocation });
return Json(comboList, JsonRequestBehavior.AllowGet);
}
当我运行应用程序时,它看起来就是这样,成本中心下拉列表是一个多选下拉列表,它显示所有分支机构的成本中心
现在,如果用户从第一个下拉列表中选择任何一个分支,则应重新加载multiselect,并仅显示与所选分支关联的成本中心。为此,我使用了与我们创建的相同的初始化函数,但只是这一次,我传递了与所选分支关联的相应branchid,而不是branchid的0。当我这样做而不是重新加载multiselect时,它会创建一个新实例
每当我从第一个下拉列表中选择任何分支时,它都会创建新的实例,并显示已有的实例
如何停止此渲染过程并仅根据传递的参数重新加载数据源和显示数据
问候,
萨万·帕尔玛(Savan Parmar)我犯的错误是,每当我想重新填充多选下拉列表时,我都调用了相同的初始化方法
initializeMultiSelectCombo("costCentreMulti", "/CostCentre/GetDataForComboForBranch?branchId=0");
相反,我需要做的是使用带有适当参数的read方法,它将重新加载数据源
$("#costCentreMulti").data("kendoMultiSelect").dataSource.read({ branchId: branchId });
这解决了我的问题,现在multiselect正在正确显示