怪事:DataTable 与DataGridView 同步问题

yifawu100 2012-04-04 10:17:31
DataTable 与DataGridView 绑定了,
在 DataTable 的 ColumnChanged 事件中用代码更改了某一列的内容,表示一列有改动另一列也跟着改动,
可是DataGridView显示的另一列并不马上改过来,当光标移到下一列或其它位置才显示改动后的值。
有什么办法可以立即显示呢? 不用移动光标位置。

...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifawu100 2012-04-04
  • 打赏
  • 举报
回复
非常感谢各位,我试下看看
jointan 2012-04-04
  • 打赏
  • 举报
回复
不知道你用的是CheckBox,CheckBox有点特殊,刚查了下MSDN,以下代码差不多和你的意思一样
 public partial class Form1 : Form
{

public Form1()
{

InitializeComponent();
this.m_DataSet.Table.ColumnChanged += new DataColumnChangeEventHandler(Table_ColumnChanged);

}

void Table_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
if (e.Column.ColumnName == "A")
{
if ((bool)e.Row["A"] == true)
{
e.Row["B"] = "T";
}
else
{
e.Row["B"] = "F";
}
}
}


private void m_GridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}


private void m_GridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex !=-1)
{

this.m_GridView.UpdateCellValue(1, e.RowIndex);
}
}

private void m_GridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}


}
传递正能量 2012-04-04
  • 打赏
  • 举报
回复
每当改变datatable的时候,重新绑定一下,datasource=
yifawu100 2012-04-04
  • 打赏
  • 举报
回复
是这样的,表格中有两个CheckBox 列(有两个Bool 字段),当点击一列时,则触发ColumnChanged事件,
然后在里面修改另一列也为真。
protected void OnColumnChanging(object sender, DataColumnChangeEventArgs args)
{
if (args.Column.ColumnName == "display")
{
string s = args.Row["display"].ToString();

if ((bool) args.ProposedValue==true)
{

args.Row.BeginEdit();
args.Row["contain"] = true;
args.Row["width"] = 90;
args.Row.EndEdit();
}
}
}
yifawu100 2012-04-04
  • 打赏
  • 举报
回复
3楼的方法很好,OK
只需其中的一个事件:

private void m_GridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 2) //这里要改为所点击的列
{
this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}

110,536

社区成员

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

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

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