怪事:DataTable 与DataGridView 同步问题

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

...全文
89 点赞 收藏 5
写回复
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);
}
}

回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告