Category / Section
How to paste the data by custom column order instead of the first column in the DataGrid when SelectionUnit is a Row in WinRT?
1 min read
When SelectionUnit is a Row, the data can be pasted only from the first column, by default. Now, you can paste the copied data anywhere in the Grid by deriving a new class from GridCutCopyPaste and overriding the PasteToRow virtual method.
C#
public class CustomCopyPaste : GridCutCopyPaste { public CustomCopyPaste(SfDataGrid sfgrid) : base(sfgrid) { } protected override void PasteToRow(object clipboardcontent, object selectedRecords) { //Splits the row into number of cells by using \t. clipboardcontent = Regex.Split(clipboardcontent.ToString(), @"\t"); var copyValue = (string[])clipboardcontent; //For Row selection if (dataGrid.SelectionUnit == GridSelectionUnit.Row) { int columnindex = 0; //Gets the currentcell column index. var index = this.dataGrid.SelectionController.CurrentCellManager.CurrentCell.ColumnIndex; foreach (var column in dataGrid.Columns) { if (index >= dataGrid.Columns.Count) return; if (copyValue.Count() <= this.dataGrid.Columns.IndexOf(column)) break; // Calls the PasteToCell method and passes the copied data and pastes the column index. PasteToCell(selectedRecords, this.dataGrid.Columns[index], copyValue[columnindex]); index++; columnindex++; } } } }
You can customize the GridCutCopyPaste class and assign its instance to the SfDataGird.GridCopyPasteproperty as described in the following code.
C#
this.sfdatagrid.GridCopyPaste = new CustomCopyPaste(sfdatagrid);
Sample Links: