K色終於得到了一個角2方法的工作,但目前我不得不關掉網格上的排序和過濾。
這個特殊的例子是依靠行選擇被啓用(由於它是如何找到一些記錄)。網格拖動應該被禁用(因爲它可以直觀地拖動網格),而是使用processRowPostCreate在行級別設置可拖動的參數。這將拖動選項設置爲看起來更好的行。
在gridOptions
processRowPostCreate: (params) => {
this.generateRowEvents(params);
},
它調用
private generateRowEvents(params) {
params.eRow.draggable = true;
params.eRow.ondragstart = this.onDrag(event);
params.eRow.ondragover = this.onDragOver(event);
params.eRow.ondrop = this.onDrop(event);
}
我跟蹤源recrord在方法ondrag當
var targetRowId: any = $event.target.attributes.row.value;
this.savedDragSourceData = targetRowId;
onDragOver照常
在降
我們必須防止無限循環(當網格添加到網格中時,ag網格看起來會記住實時方法,因此ondrop會多次出現),然後插入,刪除和拼接網格及其數據源(我將繼續查看使用網格填充數據,而不是源數據,因爲這將允許源/過濾器,當前插入空行)。然後發出事件(在這種情況下)以請求擁有組件'保存'調整後的數據。我們包裹格在我們自己的類
private onDrop($event) {
if ($event && !this.infiniteLoopCheck) {
if ($event.dataTransfer) {
if (this.enableInternalDragDrop) {
this.infiniteLoopCheck= true;
var draggedRows: any = this.gridRows[this.savedDragSourceData];
// get the destination row
var targetRowId: any = $event.target.offsetParent.attributes.row.value;
// remove from the current location
this.gridOptions.api.removeItems(this.gridOptions.api.getSelectedNodes());
// remove from source Data
this.gridRows.splice(this.savedDragSourceData, 1);
if (draggedRows) {
// insert into specified drop location
this.gridOptions.api.insertItemsAtIndex(targetRowId, [draggedRows]);
// re-add rows to source data..
this.gridRows.splice(targetRowId, 0, checkAdd);
this.saveRequestEvent.emit(this.gridRows);// shout out that a save is needed }
this.v= false;
}
else {
this.onDropEvent.emit($event);
}
}
}
}
注意,讓我們寫一組網格方法和只要使用網格在應用程序無法複製。
我將在接下來的幾天內對此進行改進,但作爲一個基本的功能,角2中的ag網格可以拖放行來排序記錄。
嗨,你有完整的代碼嗎?我正在使用角2,對我來說,Drop事件並沒有被解僱,任何想法可能是錯誤的? (我也試圖在同一個網格中重新排序)。 – Relativity
您是否將相關方法添加到網格html(dragstart)=「setDrag($ event)」 (dragStopped)=「dragStopped($ event)」 (dragover)=「onDragOver($ event)」 (drop) =「onDrop($ event)」>將一些日誌放在那些文件上以檢查它們是否正在觸發並且問題不在別處。我們已經編寫了我們自己的網格包裝器,因此它可能對整體無益。 – Matrim
感謝您的時間。我沒有在我的代碼中;相反,我有「generateRowEvents」(正如你上面提到的那樣) - 我在其中約束事件。現在我嘗試添加您在HTML中提到的代碼;但沒有運氣:(你是否使用任何其他軟件包(除了ag-grid和ng2-ag-grid)? – Relativity