public void RunExportAsync(Stream exportStream, ISpreadExportRenderer exportRenderer) { this.spreadExportRenderer = exportRenderer; if (this.GetWorker().IsBusy) { throw new Exception("There is an export operation that has not yet finished."); } List <TreeViewSpreadExportRow> exportRows = (List <TreeViewSpreadExportRow>)null; if (this.treeView.InvokeRequired) { this.treeView.Invoke((Delegate)(() => { TreeViewExportState state = this.SaveTreeViewState(); exportRows = this.GetTreeViewDataSnapshot(); this.RestoreTreeViewState(state); })); } else { TreeViewExportState state = this.SaveTreeViewState(); exportRows = this.GetTreeViewDataSnapshot(); this.RestoreTreeViewState(state); } this.GetWorker().RunWorkerAsync((object)new List <object>(2) { (object)new TreeViewSpreadExportDataSnapshot(string.Empty, exportRows), (object)exportStream }); }
private void RestoreTreeViewState(TreeViewExportState state) { foreach (RadTreeNode selectedNode in state.SelectedNodes) { selectedNode.Selected = true; } if (state.CurrentNode != null) { state.CurrentNode.Current = true; } this.treeView.HScrollBar.Value = state.HorizontalScrollbarValue; this.treeView.VScrollBar.Value = state.VerticalScrolbarValue; }
private TreeViewExportState SaveTreeViewState() { TreeViewExportState treeViewExportState = new TreeViewExportState() { HorizontalScrollbarValue = this.treeView.HScrollBar.Value, VerticalScrolbarValue = this.treeView.VScrollBar.Value }; int num = 0; Queue <RadTreeNode> radTreeNodeQueue = new Queue <RadTreeNode>(); foreach (RadTreeNode node in (Collection <RadTreeNode>) this.treeView.TreeViewElement.Root.Nodes) { radTreeNodeQueue.Enqueue(node); } while (radTreeNodeQueue.Count > 0) { RadTreeNode radTreeNode = radTreeNodeQueue.Dequeue(); if (radTreeNode.Level > num) { num = radTreeNode.Level; } if (radTreeNode.Selected) { treeViewExportState.SelectedNodes.Add(radTreeNode); } if (radTreeNode.Current) { treeViewExportState.CurrentNode = radTreeNode; radTreeNode.Current = false; } foreach (RadTreeNode node in (Collection <RadTreeNode>)radTreeNode.Nodes) { radTreeNodeQueue.Enqueue(node); } } this.depthOfTree = num; this.treeView.SelectedNodes.Clear(); return(treeViewExportState); }
private void RunExportCall(string fileName) { TreeViewExportState state = this.SaveTreeViewState(); this.columnWidths = new List <int>(); this.defaultItemSize = new Size(this.treeView.Width, this.treeView.ItemHeight); if (this.ExportVisualSettings) { this.elementProvider = this.treeView.TreeViewElement.ViewElement.ElementProvider as TreeViewElementProvider; } try { this.spreadExportRenderer.GetFormatProvider(this.ExportFormat); fileName = Path.GetDirectoryName(fileName) + (object)Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileName) + this.spreadExportRenderer.GetFileExtension(this.ExportFormat); FileStream fileStream; if (this.FileExportMode == FileExportMode.NewSheetInExistingFile && File.Exists(fileName) && this.ExportFormat == SpreadExportFormat.Xlsx) { fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false); this.spreadExportRenderer.ImportWorkbook((Stream)fileStream); } else { fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite, 32768, false); this.spreadExportRenderer.CreateWorkbook(); } using (fileStream) this.ExportToStream((Stream)fileStream); this.OnExportCompleted(new EventArgs()); ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export", (object)fileName); } finally { this.applicationDoEvents = false; this.RestoreTreeViewState(state); } }
private void RunExportCall(Stream exportStream) { TreeViewExportState state = this.SaveTreeViewState(); this.columnWidths = new List <int>(); this.defaultItemSize = new Size(this.treeView.Width, this.treeView.ItemHeight); if (this.ExportVisualSettings) { this.elementProvider = this.treeView.TreeViewElement.ViewElement.ElementProvider as TreeViewElementProvider; } try { this.spreadExportRenderer.GetFormatProvider(this.ExportFormat); this.spreadExportRenderer.CreateWorkbook(); this.ExportToStream(exportStream); this.OnExportCompleted(new EventArgs()); ControlTraceMonitor.TrackAtomicFeature((RadControl)this.treeView, "Export"); } finally { this.applicationDoEvents = false; this.RestoreTreeViewState(state); } }