c# winform datagridview界面上的行删了,但datagridview数据源没有同步如何解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# winform datagridview界面上的行删了,但datagridview数据源没有同步如何解决相关的知识,希望对你有一定的参考价值。
现在只能把它由((DataTable)datagridview1.DataSource).Rows.RemoveAt(rowNo);
改在 datagridview1.Rows.RemoveAt(rowNo);
但这样做,对datagridview的操作有时会报错,也就是说,它的绑定的源和datagridview界面显示的会不同步,如何让它能同步起来:
(注意:A删除 DataGridView 中的行 但它绑定的 DataTable 没有删除,
但 反过来 B删除 它绑定的 DataTable 居然可以自动将DataGridView界面上的行也删除,这个就是它的一个特性了)但现在想A的也自动同步如何解决
所以这里想要实现你想要的结果,只有去修改数据源,即(DataTable)datagridview1.DataSource,然后再重新绑定DataSource,即datagridview1.DataSource=((DataTable)datagridview1.DataSource).Rows.RemoveAt(rowNo); 参考技术A datagridview1.Rows.RemoveAt(rowNo);只是删除datagridview的一行,你没有写对应的删除绑定源的代码,当然两者不会同步。本回答被提问者和网友采纳 参考技术B datagridview1只是用来显示数据,你在这上面进行增删改等操作不会影响数据源DataTable,除非你在对datagridview1增加时增加代码,对数据源DataTable也增删改 参考技术C 有什么需求使你认为必须删界面而不是数据源?
C# winform DatagridView 的简单操作
数据显示操作:
dgBill.Columns[0].DataPropertyName = "key1";
dgBill.Columns[1].DataPropertyName = "key2";
dgBill.Columns[2].DataPropertyName = "key3";
DataTable dt = new DataTable();
dt.Columns.Add("key1", Type.GetType("System.String"));
dt.Columns.Add("key2", Type.GetType("System.String"));
dt.Columns.Add("key3", Type.GetType("System.String"));
DataRow dr = null;
dr = dt.NewRow();
dr["key1"] = "key1";
dr["key1"] = "key2";
dr["key1"] = "key3";
dt.Rows.Add(dr);
this.dgBill.DataSource = dt;
选择一行数据:
//右键菜单事项
private void dg1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (e.RowIndex >= 0)
{
//若行已是选中状态就不再进行设置
dg1.ClearSelection();
dg1.Rows[e.RowIndex].Selected = true;
//设置当前行
dg1.CurrentCell = dg1.Rows[e.RowIndex].Cells[0];
//弹出操作菜单
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
}
}
//选择菜单的时候,进行获取右键一行的数据
DataGridViewRow rowData = dgBill.CurrentRow;
if (rowData != null)
{
if (rowData.Cells["ID"].Value != null)
{
}
else
{
MessageBox.Show("数据转换异常", "提示", MessageBoxButtons.OK);
}
}
以上是关于c# winform datagridview界面上的行删了,但datagridview数据源没有同步如何解决的主要内容,如果未能解决你的问题,请参考以下文章
C# Winform DataGridView中实现二维表头
C# winform datagridview 编辑状态的问题