有沒有方法可以根據需要向slickgrid添加新行?例如,在頁面上單擊時顯示新行的按鈕。Slickgrid按需添加新行
回答
您可以隨時在網格中添加新行。您所需要做的就是將該行的數據對象添加到網格數據中。
假設您從數據源創建網格 - myGridData
(這是一個對象數組)。 只需將新行對象推送到此數組。在網格上調用invalidate
方法。
完成:)
它可以很容易地使用dataView.addItem(PARAMS),只需用參數替換PARAMS做..
function addNewRow(){
var item = { "id": "new_" + (Math.round(Math.random() * 10000)), "Controller": tempcont, "SrNo1": tempsrno };
dataView.addItem(item);
}
這裏ID,控制器,SrNo1是colunm
的IDS除了創建新行之外,我還需要顯示它,以便用戶可以開始寫入。我使用分頁,所以這裏是我做過什麼:
//get pagination info
var pageInfo = dataView.getPagingInfo();
//add new row
dataView.addItem({id: pageInfo.totalRows});
//got to last page
dataView.setPagingOptions({pageNum: pageInfo.totalPages});
//got to first cell of new row
var aux = totalRows/ pageInfo.pageSize;
var row = Math.round((aux - Math.floor(aux)) * pageInfo.pageSize, 0);
grid.gotoCell(row, 0 ,true);
之前,我使用分頁,我只是需要這樣的:
var newId = dataView.getLength();
dataView.addItem({id: newId});
grid.gotoCell(newId, 0 ,true);
var newRow = {col1: "col1", col2: "col2"};
var rowData = grid.getData();
rowData.splice(0, 0, newRow);
grid.setData(rowData);
grid.render();
grid.scrollRowIntoView(0, false);
工作對我罰款。
通過將「onAddNewRow」偵聽器訂閱到您的網格對象,您可以動態地添加一行,如點擊按鈕。正如許多人所建議的那樣,最好使用dataView plugin來與您的數據進行交互。請注意,您需要將「enableAddRow」選項設置爲「true」。
首先,DataView要求在添加新行時設置唯一的行「id」。計算這個值的最好方法是使用dataView.getLength(),它會給你當前網格中存在的行數(我們將用它作爲新行的id)。 DataView addItem函數需要一個item對象。所以我們創建一個空的項目對象並將其附加到它。其次,當你添加數據時,你將只關注單個單元格。輸入數據後(通過模糊該單元格),DataView將會注意到,您沒有輸入該行中任何剩餘單元格的數據(當然),並將其值設爲「未定義」。這不是一個理想的效果。所以你可以做的就是循環顯式設置的列,並用「」(空字符串)的值將它們附加到我們的項目對象。
第三,我們不希望所有的單元格都是空白的。實際上,我們希望原始單元格的輸入數據出現。我們有這些數據,所以我們可以最後設置它,以便覆蓋我們先前設置的「」(空字符串)值。
最後,我們要更新網格,使其顯示所有這些更改。
grid.onAddNewRow.subscribe(function (e, args) {
var input = args.item;
var col = Object.keys(input)[0]
var cellVal = input[Object.keys(input)[0]]
// firstly
var item = {};
item.id = dataView.getLength();
// secondly
$.each(columns, function(count, value) {
colName = value.name
console.log(colName)
item[colName] = ""
})
// thirdly
item[col] = cellVal
dataView.addItem(item);
// lastly
grid.invalidateRows(args.rows);
grid.updateRowCount();
grid.render();
grid.resizeCanvas();
});
我希望這有助於。乾杯!
- 1. 向SlickGrid添加新行
- 2. 添加新行到SlickGrid
- 3. 添加新行後重新排序slickgrid?
- 4. 如何在Slickgrid上添加新行?
- 5. 將自定義按鈕添加到SlickGrid?
- 6. Slickgrid在列中添加按鈕
- 7. jquery slickgrid - 添加區別到分組行
- 8. slickgrid驗證將要添加的行
- 9. 在slickgrid中添加的新行的默認值
- 10. 如何添加/使用SlickGrid
- 11. 如何在按鈕上添加新行?
- 12. 使用按鈕動態添加新行
- 13. 如何讓新添加按鈕運行
- 14. 用按鈕添加新行到javafx tableview
- 15. 按需添加URL映射
- 16. iOS - 按需添加標籤?
- 17. 添加類添加新行
- 18. 如何將數據添加到SlickGrid DataView?
- 19. 數據添加到數據視圖SlickGrid
- 20. 如何向slickgrid的YesNoCheckboxCellEditor添加確認?
- 21. 如何在slickgrid中添加隱藏列
- 22. 如何在slickgrid中添加複選框?
- 23. Slickgrid編輯按行而不是列?
- 24. 添加新控件後添加新行
- 25. Slickgrid:強制電網重新加載
- 26. 我可以在飛行中向slickgrid添加一列嗎?
- 27. 如何將空的非選擇行添加到slickgrid?
- 28. Slickgrid爲單元格/列或行添加顏色
- 29. 如何在SlickGrid中使用javascript添加一行
- 30. DataGrid:按行添加行
感謝您的回覆。在我的例子中,我想向用戶展示用於輸入的空白單元格。我可以創建一個具有空白屬性和無效的新數據對象,但我也希望只能在單擊「添加新行」按鈕時顯示空白行。這是我的理解是,當網格選項設置爲enableAddRow時,一個空白行始終可見。它是否與在「添加新行」按鈕的單擊事件期間更新網格選項一樣簡單? – user1347790 2012-04-24 23:46:38