简体   繁体   English

c#wpf datagrid添加行

[英]c# wpf datagrid add row

I need to insert values in a table that have different columns from time to time. 我需要在不时有不同列的表中插入值。 The columns and row data are updated from MySql. 列和行数据从MySql更新。 Each row values are in single MySql cells with the following format: 每个行值都在单个MySql单元格中,格式如下:

ColumnName{Delimiter}Value{BigDelimiter}Column2Name{Delimiter}Value2...

So I split the cell strings to get the column header and value, as the user can rearrange columns, modify, delete or insert new ones. 所以我拆分单元格字符串以获取列标题和值,因为用户可以重新排列列,修改,删除或插入新列。 I searched for a solution, though I get nothing but empty rows: 我搜索了一个解决方案,虽然我只得到空行:

    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>();
    }

Please use Observablecollection to bind the data grid. 请使用Observablecollection绑定数据网格。 By using observablecollection easily you can add or delete item and not required to reset the data source of data grid. 通过轻松使用observablecollection,您可以添加或删除项目,而不需要重置数据网格的数据源。

Sample Code: 示例代码:

observableCollection myClass = new observableCollection(); observableCollection myClass = new observableCollection(); myClass.add(Class) myClass.add(类)

要从datagrid删除额外的行,只需要make property ...

Canuseraddrows="false";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM