How do you implement the Drag and Drop feature in a UltraWeb Grid?
I remember a demo page with this functionality but I am unable to find it again :)
Hi if you have not found solution. What I am doing is
1. Have an order column in database
2. Hide the column in client and add a column with up down arrow
3. Write a javascript in client side when this up down arrow pressed
4. Which does exchange the order value and sort the grid on column.
It works file and allows you to move the row to higher or lower rows nicely.
Regards
Could you post the java script for moving the rows and resorting them? I have a similar problem.
"function UpdateTheOrderColumnForNewEntry(gridName,orderColumnName){\n" + " var grid = igtbl_getGridById(gridName);\n" + " var newlyaddedRow = grid.getActiveRow();\n" + " var ROWS = grid.Rows;\n" + " if (newlyaddedRow.ParentRow != null) \n" + " ROWS = newlyaddedRow.ParentRow.Rows; \n" + " // traverse each row to find the max number \n" + " var orderColumn = newlyaddedRow.Band.getColumnFromKey(orderColumnName);\n" + " var maxNumber = 0;\n" + " if (orderColumn != null){\n" + " for (var i=0; i < ROWS.length; i++){\n" + " // get the ordercell\n" + " var orderCell = ROWS.getRow(i).getCellByColumn(orderColumn);\n" + " var orderCellValue = orderCell.getValue();\n" + " if ((orderCellValue != null) && (orderCellValue > maxNumber)){\n" + " maxNumber = orderCellValue;\n" + " }\n" + " } \n" + " // now it is time to update the ordercolumn of new row\n" + " var orderCellofNewRow = newlyaddedRow.getCellByColumn(orderColumn);\n" + " orderCellofNewRow.setValue(maxNumber + 1, false);\n" + " // finally update the newly added row list if it does not filled allready\n" + " var gridNewRowPair = new GridNewRowPair(grid.Id, newlyaddedRow.Id);\n" + " if (! newRowsOfGrids.ContainsItem(gridNewRowPair))\n" + " newRowsOfGrids.AddItem(gridNewRowPair);\n" + " }\n" + "}\n" + "function Move(gridName,orderColumnName,Up){\n" + " var grid = igtbl_getGridById(gridName);\n" + " var activeCell = grid.getActiveCell();\n" + " var currentRow= activeCell.Row;\n" + " var ROWS = grid.Rows;\n" + " if (currentRow.ParentRow != null) \n" + " ROWS = currentRow.ParentRow.Rows; \n" + " var rowIndex = ROWS.indexOf(currentRow);\n" + " if (rowIndex != -1) { \n"+ " var column = currentRow.Band.getColumnFromKey(orderColumnName);\n" + " var rowCell = currentRow.getCellByColumn(column);\n" + " var CurrentValue = rowCell.getValue();\n" + " var neighbourIndex = rowIndex - 1;\n" + " if (Up == false)\n" + " neighbourIndex = rowIndex + 1;\n" + " upperRow = ROWS.getRow(neighbourIndex);\n" + " if (upperRow != null) {\n"+ " var gridNewRowPair = new GridNewRowPair(grid.Id, upperRow.Id);\n" + " if (newRowsOfGrids.ContainsItem(gridNewRowPair))\n" + " alert('Please save and then re-order newly added rows!!');\n" + " else {\n" + " var upperRowCell = upperRow.getCellByColumn(column);\n" + " var neighbourValue = upperRowCell.getValue();\n" + " rowCell.setValue(neighbourValue, false);\n" + " upperRowCell.setValue(CurrentValue,false);\n" + " grid.sortColumn(column.Id,false);\n" + " grid.addSortColumn(column.Id, true);\n" + " } \n" + " } \n" + " } \n" + "}\n" + "function RemoveNewlyAddedRow(gridName, rowId){\n" + " var grid = igtbl_getGridById(gridName);\n" + " var gridNewRowPair = new GridNewRowPair(grid.Id, rowId);\n" + " if (newRowsOfGrids.ContainsItem(gridNewRowPair))\n" + " newRowsOfGrids.RemoveItem(gridNewRowPair);\n" + "}\n";