[如何解决]除非 DataGridView 被数据绑定到支持更改通知并允许删除的 IBindingList,否则不能以编程方式移除行。
时间:2010-03-26
来源:互联网
现在想实现的是,在界面上按按钮删除一些数据,数据库中对应row的数据也删除。
C# code
private void DeleteSelectedButton_Click(object sender, EventArgs e) { if (MessageBox.Show("删除所选记录,你确定吗?", "确认删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel) return; for (int i = HistoryView.Rows.Count - 1; i >= 0; i--) { DataGridViewRow row = HistoryView.Rows[i]; if (Convert.ToBoolean(row.Cells[0].Value) == true) { HistoryView.Rows.RemoveAt(i); } } maOp.manDB.SubmitChanges(); }
但是会报“除非 DataGridView 被数据绑定到支持更改通知并允许删除的 IBindingList,否则不能以编程方式移除行。”的错误。
我尝试绑定IBindingList如下:
C# code
HistoryView.DataSource = maOp.GetOldHistory(DateTime.Now) ; BindingSource bs = new BindingSource(); BindingList<Man_Log> bl = new BindingList<Man_Log>(maOp.GetOldHistory(DateTime.Now)); bl.AllowRemove = true; HistoryView.ReadOnly = false; bs.DataSource = bl; HistoryView.DataSource = bs;
又会报错:“集合是只读的”。
请教应该怎么弄?谢谢
作者: shichuanwuhan 发布时间: 2010-03-26
作者: leon9090 发布时间: 2010-03-26
try
{
sqlconnection sqlconnection = new sqlconnection(连接数据库);//先创建sqlconnection对象,并连接sql数据库
this.sqlconnection.Open();//在打开sql数据库连接
sqlcommand sqlcommand = new sqlcommand("delete from 表名 ",this.sqlconnection)
//在创建sqlcommand对象,并写sql语句
this.i = this.sqlcommand.ExecuteNonery();//调用sqlcommand的方法
if(i!=0)//判断
{
MessageBox.Show("删除成功!");
}
else
{
MessageBox.Show("删除失败!");
}
}catch(Exception ex)
{
}finally
{
this.sqlconnection.Close();//最后关闭
}
可以试用下
作者: zhouhang122594520 发布时间: 2010-03-26
直接删除数据库中的数据,然后重新给DATAGRIDVIEW绑定数据源
我只会删除界面上的条目,不知道如何直接删除数据库里的。是用RemoveAt么?我初学,啥都不会。
作者: shichuanwuhan 发布时间: 2010-03-26
你在用HistoryView这个做XUN环,在其XUN环内部是不能删除它的行的。
作者: wwx6312388 发布时间: 2010-03-26
作者: Lost_Painting 发布时间: 2010-03-26
但是会报“除非 DataGridView 被数据绑定到支持更改通知并允许删除的 IBindingList,否则不能以编程方式移除行。”的错误
你在用HistoryView这个做XUN环,在其XUN环内部是不能删除它的行的。
请教下应该怎么弄呢?我这里必须要用到循环。
我没有用DataGridViewRow作循环体,用的是DataGridView的index也不行么?
作者: shichuanwuhan 发布时间: 2010-03-26
你需要将删除操作提交到数据库
就是不会这个。。。能不能写一两句代码让我参考一下?
作者: shichuanwuhan 发布时间: 2010-03-26
作者: shichuanwuhan 发布时间: 2010-03-26
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private DataTable dt = new DataTable (); private OdbcDataAdapter da = new OdbcDataAdapter(); private void Form1_Load_1(object sender, EventArgs e) { OdbcConnection cn = new OdbcConnection("driver={IBM DB2 ODBC DRIVER};Database=SDDT;hostname=223.1.1.19;port=50000; protocol=TCPIP;uid=LLL;pwd=BCL987; CurrentSchema=SDDT;"); OdbcCommand com = new OdbcCommand("select * from MODEL", cn); da =new OdbcDataAdapter (com ); DataTable dt = new DataTable(); dt .Locale = System .Globalization .CultureInfo .InvariantCulture ; da.Fill(dt); this.dataGridView1.DataSource = dt; } private void getupdate() { dt = dataGridView1.DataSource as DataTable;//把DataGridView绑定的数据源转换成DataTable OdbcCommandBuilder cb = new OdbcCommandBuilder(da); //将数据放到datatable 中 datagridview 的数据源 是datatable //修改datagridview //更新 da.Update(dt); } private void button1_Click_1(object sender, EventArgs e) { this.getupdate(); MessageBox.Show("更新成功"); } private void button2_Click(object sender, EventArgs e) { OdbcConnection con = Program.createConnection(); con.Open(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); string querysql = "select * from MODEL"; OdbcDataAdapter da = new OdbcDataAdapter(querysql, con); da.Fill(ds, "tab"); dt = ds.Tables[0]; this.dataGridView1.DataSource = dt; con.Close(); } private void button3_Click(object sender, EventArgs e) { int row = dataGridView1.SelectedRows.Count; if (MessageBox.Show("确认删除选中的" + row.ToString() + "条记录吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { while (row > 0) { ((DataRowView)dataGridView1.SelectedRows[0].DataBoundItem).Row.Delete(); row = row - 1; } this.getupdate(); MessageBox.Show("删除成功"); } }
作者: wxssaa 发布时间: 2011-12-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28