DOBON.NET DOBON.NETプログラミング掲示板過去ログ

BindingSource上で新規レコードへのコピーについて

環境/言語:[XP、VS2008 C#]
分類:[.NET]

たびたびお世話になります。

フォーム上にDataGridViewとテキストボックス等のコントロールを配置したデータ編集画面を作成しています。
データはBindingSourceで各コントロールに連結しています。

既存の行でレコードのコピーを作成し、新規行に対してこれを貼り付けたいです。データの貼り付けを実施したあと、データグリッド上では貼り付けたデータが表示されますが、テキストボックス等には反映されません。

private void btnCopy_Click(object sender, EventArgs e)
{
System.Windows.Forms.DataGridViewRow dgr = this.m_DataGrid[0].CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
DataRow drSrc = (System.Data.DataRow)drv.Row;

if (drSrc == null)
return;

DataTable dt = m_ds.Tables["メインテーブル"];
m_CopyRowWork = dt.NewRow();

foreach (DataColumn col in dt.Columns)
{
//自動インクリメント列は除く
if (col.AutoIncrement)
continue;
m_CopyRowWork[col.Ordinal] = drSrc[col.Ordinal];
}
}


private void btnPaste_Click(object sender, EventArgs e)
{
DataTable dt = m_ds.Tables["メインテーブル"];
DataRowView drv = (DataRowView)m_BindingSource[0].Current;
DataRow drDst = (DataRow)drv.Row;
if (drDst == null)
return;
foreach (DataColumn col in dt.Columns)
{
//自動インクリメント列は除く
if (col.AutoIncrement)
continue;

drDst[col.Ordinal] = m_CopyRowWork[col.Ordinal];
}

//テキストボックス等の編集用コントロールを全て取得しています。
Control[] ctls = this.GetAllControls(EditArePanel);
for (int i = 0; i < ctls.Count(); i++)
{
ctls[i].Refresh(); //コントロールにデータが反映されない。
}
m_DataGrid[0].Refresh();//データグリッドにデータが反映される。

}

コピーしたデータが編集用コントロール(テキストボックス等)に反映されないため、意味をなしていません。

主キー等もコピーされているため、データをUpdate反映することはできないと思います。どのようにすれば、編集用コントロールにもデータを表示できますでしょうか。

以上、よろしくお願いしますm(__)m。
自己解決できました。

m_BindingSource[0].ResetBindings(false);

どうもお騒がせしましたm(__)m。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板