0

DataTable を DataGridView にコピーするメソッドは動作していません。このメソッドは DataGridView に列と空の行を追加することしかできません。DataGridView の DataSource プロパティを使用せずに、これに対する解決策を提案できますか?

    public void CopyDataTableInDataGridView(DataTable table, DataGridView gdv)
    {
        if (gdv.Rows.Count > 0)
            gdv.Rows.Clear();

        if (table != null && table.Rows.Count > 0)
        {
            foreach (DataColumn _colm in table.Columns)
            {
                DataGridViewColumn _col;

                if (_colm.GetType() == typeof(bool))
                    _col = new DataGridViewCheckBoxColumn();
                else
                    _col = new DataGridViewTextBoxColumn();

                _col.Name = _colm.ColumnName;
                _col.HeaderText = string.Concat(_colm.ColumnName.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');
                gdv.Columns.Add(_col);
            }

            foreach (DataRow _row in table.Select())
            {
                //Rows getting added in dgv but not data
                // By adding following line in Code my problem get solved
                //object[] _items = _row.ItemArray;
                gdv.Rows.Add(_row);
            }
        }
    }
4

2 に答える 2

0

DataGridView に行を追加する前に次の行を追加することで、私の問題は解決します。

   object[] _items = _row.ItemArray;
于 2013-08-22T05:19:57.127 に答える
0

DataGridViewRow を追加する代わりに DataGridView に DataRow を追加しようとしています

VisualStudio のインテリジェンスが DataGridView.Rows.Add() メソッドについて何を伝えているかを見てください。それらの4つがあります:

  • Add() - 空の行を DataGridView に追加します

  • Add(DataGridViewRow) - 新しい行を追加します (これが必要です)

  • Add(count) - [count] 個の空の行を DataGridView に追加します

  • Add(object[]) 新しい行を追加し、それに値を入力します (これも使用できます)

現在、最後のものを使用しています: Add(object[])。コンパイラは、渡された DataGridViewRow を、オブジェクトが 1 つしかないオブジェクトの配列として扱っているため、文句を言いません。明らかにあなたが望むものではありません。

ここに関連する質問があります: https://stackoverflow.com/a/9094325/891715

于 2013-08-21T15:18:58.903 に答える