I need to insert values ββinto a table with different columns from time to time. Column and row data is updated with MySql. Each row value is in single MySql cells with the following format:
ColumnName{Delimiter}Value{BigDelimiter}Column2Name{Delimiter}Value2...
So, I split the rows of cells to get the column heading and value, as the user can reorder the columns, change, delete, or insert new ones. I was looking for a solution, although I only get empty lines:
private void GetDataTableValues() { if (dtData.Value != null) { try { LoadFields(); dgwDataMain.Items.Clear(); dgwDataMain.Columns.Clear(); foreach (Fields field in fields) { DataGridTextColumn column = new DataGridTextColumn(); column.Header = field.name; column.Binding = new Binding(field.name); dgwDataMain.Columns.Add(column); } if (connection.State == System.Data.ConnectionState.Broken || connection.State == System.Data.ConnectionState.Closed) connection.Open(); command.Parameters.Clear(); DateTime dt = dtData.Value ?? DateTime.Now; command.Parameters.Add("@date", MySqlDbType.Date, 50).Value = dt.ToString("yyyy-MM-dd"); command.CommandText = "SELECT value,team FROM sessions WHERE date=@date "; List<string> teams = new List<string>(); foreach (Control ctrl in panDataFilter.Children) if ((ctrl as CheckBox).IsChecked == true) teams.Add(Convert.ToString((ctrl as CheckBox).Content)); using (MySqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { bool v = false; if (teams.Contains(reader[1].ToString()) || teams.Count == 0) v = true; if (v) { DatabaseObject obj = new DatabaseObject(); List<string> str2 = new List<string>(reader[0].ToString().Split(new string[] { "</s&p>" }, StringSplitOptions.None).ToList()); obj.Items = new List<string>(str2.Count); foreach (string str in str2) { List<string> item = new List<string>(str.Split(new string[] { "<&p>" }, StringSplitOptions.None).ToList()); int index = dgwDataMain.Columns.Single(c => c.Header.ToString() == item[0].ToString()).DisplayIndex; obj.Items.Insert(index, item[1].ToString()); } dgwDataMain.Items.Add(obj); } } } } catch (MySqlException ex) { MessageBox.Show(ex.ErrorCode.ToString() + ": " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } } public class DatabaseObject { public List<string> Items = new List<string>(); }
source share