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);
}
しかし、結局のところコードが少ないので、スコッティの答えを受け入れます。