【问题标题】:DataGrid dynamic Tables filled by blank rows C# [duplicate]由空白行填充的DataGrid动态表C# [重复]
【发布时间】:2018-05-23 17:35:54
【问题描述】:

我必须显示用户选择的表格中的每一行,一切似乎都很好,但是表格被空白行填充,我正在使用 DataGrid 来显示数据。谁能告诉我我在这里做错了什么?

private void showSelectedTable(object sender, RoutedEventArgs e)
    {
        if (mysql.IsChecked == true)
        {
            string query = "SELECT * FROM " + tableListBox.SelectedItem.ToString();
            MySqlCommand myTableContent = new MySqlCommand(query, (MySqlConnection)conn);
            try
            {
                MySqlDataReader myReader = null;
                myReader = myTableContent.ExecuteReader();
                choosenDataTable = myReader.GetSchemaTable();
                foreach (DataRow row in choosenDataTable.Rows)
                {
                    DataGridTextColumn textColumn = new DataGridTextColumn();
                    textColumn.Header = row.Field<String>("ColumnName");
                    tableDataGrid.Columns.Add(textColumn);
                }

                if (myReader.HasRows)
                {
                    while (myReader.Read())
                    {
                        ObservableCollection<String> observable = new ObservableCollection<String>();
                        for (int i = 1; i < myReader.Columns.Count; i++)
                        {
                            observable.Add(myReader.GetString(i));

                        }
                        tableDataGrid.Items.Add(observable);
                    }
                }

            }
            catch(SqlException ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }


        }
    }

My app windows, with "filled" DataGrid

【问题讨论】:

  • WPF应用,还有DataGrid
  • OP,答案似乎是将MySqlDataReader数据复制到DataTable中。没有什么困难的,但是如果你遇到任何障碍,请告诉我。您将向 DataTable 添加列,而不是向 DataGrid 添加列——然后,如果您愿意,可以让 Data 根据 DataTable 自动生成自己的列。

标签: c# mysql wpf


【解决方案1】:

你可以把你的问题分成几部分

  1. 从数据源动态生成表
  2. 将该动态数据源附加到 Gridview

但我认为This 会解决你的两个问题,这是你想要的

【讨论】:

  • 我的问题几乎解决了,这段代码正在运行,但我只需要帮助将数据输入到 DataGrid,因为我得到了我的数据,但是当我想添加它时,我得到了空白行
  • 你能用你试过的更新代码吗?
  • 进行了很多尝试,现在我将代码更新为最新版本,此代码正在运行,它从每个单元格获取值并将其放入 var observable 中,但不要填写DataGrid(只创建空白单元格和行)
  • @Blvckhype 没有 observablecollction。不要使用可观察的集合。 DataGrid 不能对行使用 observablecollection。不能。而是像他的链接示例建议的那样填充 DataTable。他的示例是 winforms,因此您想使用 DataGrid.ItemsSource 而不是 DataSource,但使用 DataTable 很重要。
猜你喜欢
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多