我有一个kendo网格,每行有Model详细信息,我想在点击一行按钮时交换两个对象的值。 例如:名称为“Activity1”的对象的订货号为“1” 名称“Activity2”的对象具有订货号“2”
我想在活动1的行上按一个按钮来交换订单号,这样活动1的订单号为“2”,活动2的订单号为“1”。
我能够获得按下行的对象的详细信息并根据我的需要更改它但我无法获得下一行的详细信息以更改它,任何帮助?
代码:
@(Html.Kendo().Grid<WEB02.ConfigurationModel.TestGrid>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(o => o.Name).Width(110);
columns.Bound(o => o.Type).Width(130);
columns.Command(command => {command.Destroy();
command.Custom("Higher Order").Click("HigherOrder");
});
})
.Sortable()
.Scrollable(scrollable => scrollable.Virtual(true))
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Multiple))
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.Name))
.PageSize(100)
.Read(read => read.Action("ActivityGrid", "Configuration"))
.Destroy("TestDelete", "Configuration")
.Events(events => events.Sync("sync_handler"))
)
.Pageable(pageable => pageable
.Refresh(true))
)
功能
function HigherOrder(e) {
var tr = $(e.target).closest("tr"); // get the current table row (tr)
var item = this.dataItem(tr);
// get the date of this row
//console.log(item);
console.log(item.NodeId);
console.log(item.Type);
console.log(item);
var newOrder= parseInt(item.ActivOrderNo)+1;
var params = {
nodeID: item.NodeId + ".CONFIG.OrderNumber",
write: newOrder
};
console.log(newOrder);
var temp = {
url: "/Configuration/WriteAttribute",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(params),
success: function (params) {
window.location.replace(params.redirect);
}
};
$.ajax(temp);
答案 0 :(得分:1)
如果您只想获得下一行,则需要使用row.index
属性。
获取当前行索引:
var grid = $('[name="Grid"]').data("kendoGrid");
var dataRows = grid.items();
var rowIndex = dataRows.index(grid.select());
要按索引获取数据项,请使用下一个代码snipet:
var nextDataItem = grid.dataItems()[rowIndex+1];