DOBON.NETプログラミング掲示板過去ログ
BindingSource上で新規レコードへのコピーについて
題名: BindingSource上で新規レコードへのコピーについて
著者: あーしゃん
日時: 2011/01/02 11:32:00
ID: 27941
この記事の返信元:
(なし)
この記事への返信:
[27942]
Re[1]: BindingSource上で新規レコードへのコピーについて
あーしゃん
2011/01/02 13:51:24
[解決]
ツリーを表示
環境/言語:[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。
題名: Re[1]: BindingSource上で新規レコードへのコピーについて
著者: あーしゃん
日時: 2011/01/02 13:51:24
ID: 27942
この記事の返信元:
[27941]
BindingSource上で新規レコードへのコピーについて
あーしゃん
2011/01/02 11:32:00
この記事への返信:
(なし)
ツリーを表示
自己解決できました。
m_BindingSource[0].ResetBindings(false);
どうもお騒がせしましたm(__)m。
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.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。