1

csvファイルからデータをインポートしていますが、列ヘッダーがある場合と、顧客がカスタム列を選択しない場合があります(複数のドロップダウンから)

私の問題は、列のタイプと名前を変更できることですが、データ行をクローンテーブルにインポートする場合、行を追加するだけで、それらの行にデータは追加されません。列の名前を古い値に変更すると、機能します。たとえば、列0の名前を0に変更すると、下の行にデータが入力されなくなりますが、ゼロをゼロに変更すると、次のようになります。アイディア:

これが私のコーディングです:

 #region Manipulate headers

            DataTable tblCloned = new DataTable();
            tblCloned = tblDataTable.Clone();
            int i = 0;

            foreach (string item in lstRecord)
            {

                if (item != "Date")
                {
                    var m = tblDataTable.Columns[i].DataType;
                    tblCloned.Columns[i].DataType = typeof(System.String);
                    tblCloned.Columns[i].ColumnName = item;

                }
                else if(item == "Date")
                {
                    //get the proper date format
                    //FillDateFormatToColumn(tblCloned);
                    tblCloned.Columns[i].DataType = typeof(DateTime);
                    tblCloned.Columns[i].ColumnName = item;
                }

                i++;
            }

            tblCloned.AcceptChanges();


            foreach (DataRow row in tblDataTable.Rows)
            {                   
                tblCloned.ImportRow(row);
            }

            tblCloned.AcceptChanges();

            #endregion

2番目のforeachループでは、クローンテーブルにデータをインポートするために呼び出すときに、空の行を追加します。

数回試した後、私はこの解決策を思いつきました。

 foreach (DataRow row in tblDataTable.Rows)
            {
                int x = 0;
                DataRow dr = tblCloned.NewRow();

                foreach (DataColumn dt in tblCloned.Columns)
                {
                    dr[x] = row[x];
                    x++;
                }                       

                tblCloned.Rows.Add(dr);
                //tblCloned.ImportRow(row);
            }

しかし、結局のところコードが少ないので、スコッティの答えを受け入れます。

4

1 に答える 1

2

それ以外の

foreach (DataRow row in tblDataTable.Rows)
{                   
  tblCloned.ImportRow(row);
}

試す

foreach (DataRow row in tblDataTable.Rows)
{                   
  tblCloned.LoadDataRow(row.ItemArray, true);
}
于 2012-06-26T16:43:30.187 に答える