Перетащите строку в KendoUI Grid с помощью AngularJs
Как сделать строку в сетке KendoUI, перетаскиваемой с помощью AngularJ?
В документации сказано, что вам нужно инициализировать перетаскиваемый компонент с помощью фильтра, т.е. "tbody > tr", но я не понимаю, как применить директиву kendo-draggable только к строкам.
Вот как я инициализирую кендо-сетку:
<div
kendo-grid
k-options="activityGridOptions"
k-rebind="activityGridOptions"
></div>
2 ответа
Решение
Решение состоит в том, чтобы определить rowTemplate и altRowTemplate для объекта config и добавить шаблон в html следующим образом:
<!-- Grid row template -->
<script type="text/x-kendo-template" id="grid-row-template">
<tr data-uid="#= uid #" draggable draggable-data="dataItem" draggable-type="'planner.activity'" ng-class="{'current-item': currentActivityId == dataItem.SyncTableUniqueId}" ng-click="setCurrentActivity(dataItem)">
<td>{{dataItem.AvtaleNr}}.{{dataItem.VareLøpenummer}}</td>
<td>
{{dataItem.Date| moment:'ll'}} {{dataItem.Time| moment:'HH:mm':'HH:mm:ss'}}
</td>
<td>{{dataItem.FirstName}}</td>
</tr>
</script>
Как вы могли заметить, я использую перетаскиваемую директиву без кендо. RowTemplate и altRowTemplate назначены внутри моего контроллера:
$scope.activityGridOptions = {
dataSource: $scope.gridDataSource,
// ...
rowTemplate: kendo.template($("#grid-row-template").html()),
altRowTemplate: kendo.template($("#grid-row-template").html())
};
В дополнение к ответу выше, вы можете попробовать использовать эту угловую директиву: