private async Task writeToFile(SelectedFeatures featureSelectionDataSource) { Task t = new Task(exportFeatures, featureSelectionDataSource); t.Start(); await t; }
private void FillFeaturesToDataTable(Collection <Feature> features, DataTable dataTable) { if (CalculatedDbfColumn.CalculatedColumns.ContainsKey(featureLayer.FeatureSource.Id)) { CalculatedDbfColumn.UpdateCalculatedRecords(CalculatedDbfColumn.CalculatedColumns[featureLayer.FeatureSource.Id], features, GisEditor.ActiveMap.DisplayProjectionParameters); } FillUriColumnNames(uriColumnNames, dataTable); foreach (var feature in features) { DataRow newRow = dataTable.NewRow(); newRow[FeatureIdColumnName] = feature.Id; newRow[IsSelectedColumnName] = SelectedFeatures.Count > 0 && SelectedFeatures.ContainsKey(feature.Id); string tempPreviousValue = string.Empty; foreach (var item in feature.ColumnValues) { if (!string.IsNullOrEmpty(item.Key) && dataTable.Columns.Contains(item.Key)) { if (uriColumnNames.Contains(item.Key)) { newRow[item.Key] = new Uri(item.Value, UriKind.RelativeOrAbsolute); } else { newRow[item.Key] = string.IsNullOrEmpty(item.Value) ? DBNull.Value : (object)item.Value; } int previousRowCount = tempPreviousValue.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Count(); int currentRowCount = item.Value.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Count(); if (previousRowCount != currentRowCount) { EnableColumnVirtualization = false; } tempPreviousValue = item.Value; } } //foreach (var linkColumnValue in feature.LinkColumnValues) //{ // newRow[linkColumnValue.Key] = string.Join(Environment.NewLine, linkColumnValue.Value.Select(v => v.Value)); //} dataTable.Rows.Add(newRow); } }
private void exportFeatures(object parameters) { SelectedFeatures featureSelectionDataSource = (SelectedFeatures)parameters; string separator = ","; StreamWriter sw = new StreamWriter(_folderPath + "\\" + featureSelectionDataSource.Name + ".csv"); // now add the header in csv file suffix with "," delimeter except last one for (int i = 0; i < featureSelectionDataSource.Fields.Count(); i++) { sw.Write(featureSelectionDataSource.Fields[i].Name); if (i != featureSelectionDataSource.Fields.Count() - 1) { sw.Write(","); } } // add new line sw.Write(sw.NewLine); foreach (Graphic graphic in featureSelectionDataSource.SelectedGraphics) { StringBuilder sb = new StringBuilder(); string fieldValue = string.Empty; for (int i = 0; i < featureSelectionDataSource.Fields.Count(); i++) { if (i != featureSelectionDataSource.Fields.Count() - 1) { sb.Append(graphic.Attributes[featureSelectionDataSource.Fields[i].Name] != null ? graphic.Attributes[featureSelectionDataSource.Fields[i].Name] + separator : " " + separator); } else { sb.Append(graphic.Attributes[featureSelectionDataSource.Fields[i].Name] != null ? graphic.Attributes[featureSelectionDataSource.Fields[i].Name] + "" : " "); } } sw.WriteLine(sb.ToString()); } sw.Flush(); sw.Close(); }