C# KendoUI网格未更新数据源
我有三个HTML下拉列表(由于性能原因,不使用剑道下拉列表),选中后,转到我的控制器操作并发回更新网格。问题是在我进行第一次选择之后,之后的每一次选择都会将其设置回第一个选择的值,因此新参数永远不会传递给我的控制器 这是我的看法C# KendoUI网格未更新数据源,c#,kendo-ui,asp.net-mvc-5,kendo-grid,kendo-asp.net-mvc,C#,Kendo Ui,Asp.net Mvc 5,Kendo Grid,Kendo Asp.net Mvc,我有三个HTML下拉列表(由于性能原因,不使用剑道下拉列表),选中后,转到我的控制器操作并发回更新网格。问题是在我进行第一次选择之后,之后的每一次选择都会将其设置回第一个选择的值,因此新参数永远不会传递给我的控制器 这是我的看法 <link href="~/Content/kendo/2014.1.318/kendo.default.min.css" rel=" stylesheet" /> <link href="~/Content/kendo/2014.1.318/kend
<link href="~/Content/kendo/2014.1.318/kendo.default.min.css" rel=" stylesheet" />
<link href="~/Content/kendo/2014.1.318/kendo.common.min.css" rel="stylesheet" />
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/Kendo")
@Html.Label("AB_ID: ")
@Html.DropDownList("AB_ID", null, "--SELECT--", htmlAttributes: new { @class = "btn btn-success dropdown-toggle" })
@Html.Label("AB_TYPE: ")
@Html.DropDownList("AB_TYPE", null, "--SELECT--", htmlAttributes: new { @class = "btn btn-success dropdown-toggle" })
@Html.Label("A_DD_ID: ")
@Html.DropDownList("A_DD_ID", null, "--SELECT--", htmlAttributes: new { @class = "btn btn-success dropdown-toggle" })
@(Html.Kendo().Grid(Model)
.Name("Grid")
.DataSource(data => data
.Server()
.Read(read => read.Action("Grid_Read", "ASSETs"))
.PageSize(10))
.Pageable()
.Sortable()
)
<script>
function passData() {
var param = {};
param.ab_id = $("#AB_ID").val();
param.ab_type = $("#AB_TYPE").val();
param.a_dd_id = $("#A_DD_ID").val();
return param;
}
$(".dropdown-toggle").on("change", function () {
var data = passData();
var grid = $("#Grid").data("kendoGrid");
grid.dataSource.read(data);
});
我认为您必须尝试使用
ajax
post,然后更新您的网格。嘿,您获取param
数组,并在该数组中分配它的值,因此每次它获取第一个值并设置它。因此,请更改场景并尝试不同的方法。。
public ActionResult Grid_Read([DataSourceRequest] DataSourceRequest request, string ab_id, string ab_type,
string a_dd_id)
{
IQueryable<ASSET> assets = null;
if (!string.IsNullOrEmpty(ab_id) || !string.IsNullOrEmpty(ab_type) || !string.IsNullOrEmpty(a_dd_id))
{
if (!string.IsNullOrEmpty(ab_id)
&& !string.IsNullOrEmpty(ab_type)
&& !string.IsNullOrEmpty(a_dd_id)
)
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_ID == ab_id && c.AB.AB_TYPE == ab_type && c.A.A_DD_ID == a_dd_id)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(ab_id) && !string.IsNullOrEmpty(ab_type) )
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_ID == ab_id && c.AB.AB_TYPE == ab_type)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(ab_id) )
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_ID == ab_id)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(ab_type) && !string.IsNullOrEmpty(a_dd_id) )
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_TYPE == ab_type && c.A.A_DD_ID == a_dd_id)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(ab_id) && !string.IsNullOrEmpty(a_dd_id) )
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_ID == ab_id && c.A.A_DD_ID == a_dd_id)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(ab_type) )
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new { A = c, AB = cm })
.Where(c => c.AB.AB_TYPE == ab_type)
.Select(x => x.A);
}
else if (!string.IsNullOrEmpty(a_dd_id))
{
assets = db.ASSETs.Join(db.ASSET_BASE,
c => c.A_AB_NO,
cm => cm.AB_NO, (c, cm) => new {A = c, AB = cm})
.Where(c => c.A.A_DD_ID == a_dd_id)
.Select(x => x.A);
}
}
if (assets == null)
assets = db.ASSETs;
ViewBag.AB_ID = new SelectList(db.ASSET_BASE.Select(x => x.AB_ID).Distinct().OrderBy(x => x));
ViewBag.AB_TYPE = new SelectList(db.ASSET_BASE.Select(x => x.AB_TYPE).Distinct().OrderBy(x => x));
ViewBag.A_DD_ID = new SelectList(db.DICTIONARies.Select(x => x.DD_ID).Distinct().OrderBy(x => x));
return View("Index", assets);
}
var dataSource = new kendo.data.DataSource({
data: [
passData()
]
});
grid.setDataSource(dataSource);