bindingSource與 DataGridview更新問題

bb_chen 2007-11-14 03:38:28
C# WinForm,
界面分為上下部份。上部份為TextBox的輸入,下部份為DataGridView顯示數據。
通过将 BindingSource 组件绑定到数据源,然后将窗体上的DataGridview及TextBox绑定到 BindingSource 组件来完成的.

當修改時,在TextBox輸入更新值後,然後取消時,在DataGridView裡也更新了數據。我用了bindingsource.CancelEdit()

如果誰有在一個界面裡有對一個表增加,刪除,修改的功能,並通過将 BindingSource 组件绑定到数据源,然后将窗体上的控件绑定到 BindingSource 组件的實現代碼,請貼給小弟學習學習.謝謝!
...全文
2063 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
KuKu8396 2008-10-23
  • 打赏
  • 举报
回复
我也想要这方面的帮助希望大家给我帮助谢谢了
bb_chen 2007-11-16
  • 打赏
  • 举报
回复
不行,應該是數據源沒有實現IEditableObject。我用的數據源時List<>。
現在只能在點修改時,記下此紀錄的值,再在取消時將紀錄下的值更新填充到BindingSource.

UniPNInfo pn = new UniPNInfo();

private void bindingNavigatorUpdateItem_Click(object sender, EventArgs e)
{
        curRunStatus = RunStatus.Edit; //編輯狀態
pn = (UniPNInfo)this.bindingSource1.Current;
index = this.bindingSource1.Position;
}

private void bindingNavigatorCancel_Click(object sender, EventArgs e)
{
if (curRunStatus == RunStatus.Edit)
{
this.bindingSource1.RemoveAt(index);
this.bindingSource1.Insert(index, pn);
this.dataGridView1.CurrentCell = dataGridView1[0, index];
}

這樣實現的話,在點取消按鈕時,我發現pn的值還是跟著變化。 是不是要設置靜態變量還是只讀,不知道怎麼實現了?
bb_chen 2007-11-16
  • 打赏
  • 举报
回复
不行,應該是數據源沒有實現IEditableObject。我用的數據源時List<>。
現在只能在點修改時,記下此紀錄的值,再在取消時將紀錄下的值更新填充到BindingSource.

UniPNInfo pn = new UniPNInfo();

private void bindingNavigatorUpdateItem_Click(object sender, EventArgs e)
{
        curRunStatus = RunStatus.Edit; //編輯狀態
pn = (UniPNInfo)this.bindingSource1.Current;
index = this.bindingSource1.Position;
}

private void bindingNavigatorCancel_Click(object sender, EventArgs e)
{
if (curRunStatus == RunStatus.Edit)
{
this.bindingSource1.RemoveAt(index);
this.bindingSource1.Insert(index, pn);
this.dataGridView1.CurrentCell = dataGridView1[0, index];
}

這樣實現的話,在點取消按鈕時,我發現pn的值還是跟著變化。 是不是要設置靜態變量還是只讀,不知道怎麼實現了?
bb_chen 2007-11-16
  • 打赏
  • 举报
回复
搞定

編輯時先掛起绑定,並刪除選中的紀錄。取消時再insert原紀錄,並重新绑定
bb_chen 2007-11-16
  • 打赏
  • 举报
回复
不行,應該是數據源沒有實現IEditableObject。我用的數據源時List<>。
現在只能在點修改時,記下此紀錄的值,再在取消時將紀錄下的值更新填充到BindingSource.

UniPNInfo pn = new UniPNInfo();

private void bindingNavigatorUpdateItem_Click(object sender, EventArgs e)
{
        curRunStatus = RunStatus.Edit; //編輯狀態
pn = (UniPNInfo)this.bindingSource1.Current;
index = this.bindingSource1.Position;
}

private void bindingNavigatorCancel_Click(object sender, EventArgs e)
{
if (curRunStatus == RunStatus.Edit)
{
this.bindingSource1.RemoveAt(index);
this.bindingSource1.Insert(index, pn);
this.dataGridView1.CurrentCell = dataGridView1[0, index];
}

這樣實現的話,在點取消按鈕時,我發現pn的值還是跟著變化。 是不是要設置靜態變量還是只讀,不知道怎麼實現了?
  • 打赏
  • 举报
回复
ResetCurrentItem()方法是取消变化并让控件重新读取值的。试试看。
bb_chen 2007-11-14
  • 打赏
  • 举报
回复
這樣描述了:
C# WinForm .我用BindingSource作中間數據源,然後將TextBox及DataGridView绑定到BindingSource。在界面上有修改,保存和取消(不保存)3個按鈕。當我按修改按鈕時,TextBox有原绑定的信息 "a ",此時我在TextBox中輸入了修改的信息“b”,但是我沒有保存,而是點擊了取消按鈕。但是我在DataGridView中的顯示卻變成了 "b ",本來還應該是原信息 "a ".我用的是bindingsource1.cancelEdit().
如何使BindingSource中的內容不變化?
挺拔的劲松 2007-11-14
  • 打赏
  • 举报
回复
先Clear了,再绑。
bb_chen 2007-11-14
  • 打赏
  • 举报
回复
help
bb_chen 2007-11-14
  • 打赏
  • 举报
回复
[color=#FF0000]這樣描述了:
C# WinForm .我用BindingSource作中間數據源,然後將TextBox及DataGridView绑定到BindingSource。在界面上有修改,保存和取消(不保存)3個按鈕。當我按修改按鈕時,TextBox有原绑定的信息"a",此時我在TextBox中輸入了修改的信息“b”,但是我沒有保存,而是點擊了取消按鈕。但是我在DataGridView中的顯示卻變成了"b",本來還應該是原信息"a".我用的是bindingsource1.cancelEdit().
如何使BindingSource中的內容不變化?[/
color]

謝謝
dcbr4 2007-11-14
  • 打赏
  • 举报
回复
这个不怎么清楚,最好看一下MSDN应该有好的方法的
lnwuyaowei 2007-11-14
  • 打赏
  • 举报
回复
没太看明白楼主的意思。

111,076

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧