public Form1() { InitializeComponent(); dashboardDesigner1.CreateRibbon(); Dashboard dashboard = new Dashboard(); DashboardExcelDataSource excelDataSource = new DashboardExcelDataSource("Excel Data Source"); excelDataSource.FileName = @"..\..\Data\GDPByCountry.xlsx"; excelDataSource.SourceOptions = new ExcelSourceOptions(new ExcelWorksheetSettings("Sheet1")); dashboard.DataSources.Add(excelDataSource); GridDashboardItem grid = new GridDashboardItem(); grid.DataSource = excelDataSource; // Creates two hyperlink columns: the first column takes hyperlinks from the underlying data source while the second // generates links based on the specified URI pattern and country names. GridHyperlinkColumn hyperlinkColumn1 = new GridHyperlinkColumn(new Dimension("Name")); hyperlinkColumn1.UriDataMember = "Link"; GridHyperlinkColumn hyperlinkColumn2 = new GridHyperlinkColumn(new Dimension("OfficialName")); hyperlinkColumn2.UriDataMember = "Name"; hyperlinkColumn2.UriPattern = "https://en.wikipedia.org/wiki/{0}"; GridMeasureColumn gdpColumn = new GridMeasureColumn(new Measure("GDP")); grid.Columns.AddRange(hyperlinkColumn1, hyperlinkColumn2, gdpColumn); dashboard.Items.Add(grid); dashboardDesigner1.Dashboard = dashboard; }
public static void GenerateColumnsSfDataGrid(SfDataGrid dataGrid, DataTable table, string prefab) { using (var conn = new SqlConnection(App.ConnectionString)) { conn.Open(); if (!string.IsNullOrEmpty(prefab)) { DataTable prefabTable = App.GetPrefabDataTable(conn, $"{Settings.Default.Schema}_PREFABS", prefab); DataTable comboTable = App.GetPrefabDataTable(conn, $"{Settings.Default.Schema}_COMBOBOXES", prefab); //could loop by table.ColumnNames.Count; but if prebab is changed... problems; maybe not all columns showing for (var i = 0; i < table.Columns.Count; i++) { GridColumn column; try { if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("autocomplete")) { column = new GridTemplateColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; var comboStrings = new HashSet <string>(); for (var j = 0; j < comboTable.Rows.Count; j++) { if (!string.IsNullOrEmpty( comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()].ToString())) { comboStrings.Add(comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()] .ToString()); } } var autoCompleteElem = new FrameworkElementFactory(typeof(AutoComplete)); var autoCompleteItemsBind = new Binding { Source = comboStrings, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, BindsDirectlyToSource = true }; var autoCompleteBind = new Binding(table.Columns[i].ColumnName) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = BindingMode.TwoWay, BindsDirectlyToSource = true }; autoCompleteElem.SetValue(UIElement.FocusableProperty, true); autoCompleteElem.SetValue(AutoComplete.IsDropDownOpenProperty, true); autoCompleteElem.SetValue(ItemsControl.IsTextSearchEnabledProperty, true); autoCompleteElem.SetValue(AutoComplete.IsAutoAppendProperty, true); autoCompleteElem.SetValue(ItemsControl.IsTextSearchCaseSensitiveProperty, false); autoCompleteElem.SetValue(AutoComplete.CustomSourceProperty, autoCompleteItemsBind); autoCompleteElem.SetValue(AutoComplete.TextProperty, autoCompleteBind); autoCompleteElem.SetValue(AutoComplete.CanResizePopupProperty, false); //autoCompleteElem.SetValue(AutoComplete.IsFilterProperty, true); autoCompleteElem.SetValue(AutoComplete.EnableSortingProperty, false); var cellEditingTemplate = new DataTemplate(typeof(AutoComplete)) { VisualTree = autoCompleteElem }; ((GridTemplateColumn)column).EditTemplate = cellEditingTemplate; var defaultElement = new FrameworkElementFactory(typeof(TextBlock)); var bind = new Binding(table.Columns[i].ColumnName) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = BindingMode.TwoWay, BindsDirectlyToSource = true }; defaultElement.SetValue(TextBlock.TextProperty, bind); defaultElement.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center); var defaultTemplate = new DataTemplate(typeof(TextBlock)) { VisualTree = defaultElement }; ((GridTemplateColumn)column).CellTemplate = defaultTemplate; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("datepicker")) { column = new GridDateTimeColumn { MappingName = table.Columns[i].ColumnName, Pattern = DateTimePattern.ShortDate, CanEdit = true, AllowNullValue = true, NullText = string.Empty, AllowScrollingOnCircle = true, EnableBackspaceKey = true, EnableDeleteKey = true, ShowRepeatButton = true, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("checkbox")) { column = new GridCheckBoxColumn { MappingName = table.Columns[i].ColumnName, IsThreeState = false, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("numeric")) { column = new GridNumericColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString(), NumberDecimalDigits = 3, NumberGroupSeparator = "," }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("currency")) { column = new GridCurrencyColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("hyperlink")) { column = new GridHyperlinkColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("percentage")) { column = new GridPercentColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("combobox")) { var comboStrings = new HashSet <string>(); for (var j = 0; j < comboTable.Rows.Count; j++) { if (!string.IsNullOrEmpty( comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()].ToString())) { comboStrings.Add(comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()] .ToString()); } } column = new GridComboBoxColumn { MappingName = table.Columns[i].ColumnName, ItemsSource = comboStrings, StaysOpenOnEdit = true, IsEditable = true, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else { column = new GridTextColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } } catch { column = new GridTextColumn { MappingName = table.Columns[i].ColumnName, HeaderText = table.Columns[i].ColumnName }; dataGrid.Columns.Add(column); } } } else { foreach (DataColumn column in table.Columns) { GridColumn gridColumn = new GridTextColumn { MappingName = column.ColumnName, HeaderText = column.ColumnName }; dataGrid.Columns.Add(gridColumn); } } conn.Close(); } }
public static void GenerateColumnsSfDataGrid(SfDataGrid dataGrid, DataTable table, string prefab) { using (var conn = new SqlConnection(App.ConnectionString)) { conn.Open(); if (!string.IsNullOrEmpty(prefab)) { DataTable prefabTable = App.GetPrefabDataTable(conn, $"{App.Settings["Schema"]}_PREFABS", prefab); DataTable comboTable = App.GetPrefabDataTable(conn, $"{App.Settings["Schema"]}_COMBOBOXES", prefab); //could loop by table.ColumnNames.Count; but if prebab is changed... problems; maybe not all columns showing for (var i = 0; i < table.Columns.Count; i++) { GridColumn column; try { if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("autocomplete")) { var comboStrings = new HashSet <string>(); for (var j = 0; j < comboTable.Rows.Count; j++) { if (!string.IsNullOrEmpty( comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()].ToString())) { comboStrings.Add(comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()] .ToString()); } } StringBuilder sb1 = new StringBuilder(); sb1.AppendLine( "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">"); sb1.AppendLine("<ComboBox PlaceholderText=\"{Binding " + prefabTable.Rows[i]["COLUMNS"] + ", Mode=TwoWay}\" IsEditable=\"True\" IsTextSearchEnabled=\"True\" IsDropDownOpen=\"True\" >"); foreach (var comboString in comboStrings) { sb1.AppendLine($"<x:String>{comboString}</x:String>"); } sb1.AppendLine("</ComboBox>"); sb1.AppendLine("</DataTemplate>"); DataTemplate cellTemplate = (DataTemplate)XamlReader.Load(sb1.ToString()); column = new GridTemplateColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString(), EditTemplate = cellTemplate }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("datepicker")) { column = new GridDateTimeColumn { MappingName = table.Columns[i].ColumnName, FormatString = "MM/dd/yyyy", AllowInlineEditing = true, AllowNullValue = true, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString(), WaterMark = string.Empty }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("checkbox")) { column = new GridCheckBoxColumn { MappingName = table.Columns[i].ColumnName, IsThreeState = false, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("numeric")) { column = new GridNumericColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString(), MaximumNumberDecimalDigits = 3 }; dataGrid.Columns.Add(column); } /* * else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("currency")) * { * column = new GridCurrencyColumn * { * MappingName = table.Columns[i].ColumnName, * HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() * }; * * dataGrid.Columns.Add(column); * }*/ else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("hyperlink")) { column = new GridHyperlinkColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } /* * else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("percentage")) * { * column = new GridPercentColumn * { * MappingName = table.Columns[i].ColumnName, * HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() * }; * * dataGrid.Columns.Add(column); * }*/ else if (prefabTable.Rows[i]["TYPES"].ToString().ToLower().Equals("combobox")) { var comboStrings = new HashSet <string>(); for (var j = 0; j < comboTable.Rows.Count; j++) { if (!string.IsNullOrEmpty( comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()].ToString())) { comboStrings.Add(comboTable.Rows[j][prefabTable.Rows[i]["COLUMNS"].ToString()] .ToString()); } } column = new GridComboBoxColumn { MappingName = table.Columns[i].ColumnName, ItemsSource = comboStrings, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } else { column = new GridTextColumn { MappingName = table.Columns[i].ColumnName, HeaderText = prefabTable.Rows[i]["COLUMNS"].ToString() }; dataGrid.Columns.Add(column); } //TODO: More? CalendarDatePicker, TimePicker, DatePicker, Slider, ToggleSwitch, RichEditBox, PasswordBox, ColorPicker, ComboBox, RatingControl } catch { column = new GridTextColumn { MappingName = table.Columns[i].ColumnName, HeaderText = table.Columns[i].ColumnName }; dataGrid.Columns.Add(column); } } } else { foreach (DataColumn column in table.Columns) { GridColumn gridColumn = new GridTextColumn { MappingName = column.ColumnName, HeaderText = column.ColumnName }; dataGrid.Columns.Add(gridColumn); } } conn.Close(); } }