C# datagridview删除行后数据源更新 数据源是视图
string conStr = "Server= USERSWO-MI8QI4Q\\SQLEXPRESS;Initial Catalog=LibraryCRM;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection(conStr);
int index = this.dataGridView2.CurrentCell.RowIndex;
string readerID = this.dataGridView2.Rows[index].Cells["readerIDDataGridViewTextBoxColumn"].Value.ToString();
string strSQL = "Delete From ReaderInfo Where readerID= '" + readerID + "'";
try
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(strSQL ,conn );
DataSet ds = new DataSet();
sda.Fill(ds, "ReaderInfo");
dataGridView2.DataSource = ds.Tables["ReaderInfo"];
MessageBox.Show("成功删除数据!");
}
数据源是一张视图 ReaderInfo,对dataGridView2进行操作,删除选中行,然后重新绑定数据源
但是每次执行了
dataGridView2.DataSource = ds.Tables["ReaderInfo"];
之后,dataGridView2.DataSource就变成了null
纠结很久了! c# sqlserver datagridview --------------------编程问答-------------------- 视图一般用来查询,不用来增删改操作,你删除最好还是根据主键直接去对应的表里删除数据
另外你delete语句,不用填充到dataset里,直接ExecuteNonQuery()就可以了
string conStr = "Server= USERSWO-MI8QI4Q\\SQLEXPRESS;Initial Catalog=LibraryCRM;Integrated Security=SSPI";--------------------编程问答-------------------- 但是我并不是要显示表中所有的属性的数据,我之前试过用表,然后在datagridview中隐藏一列,最后dataset填充,同样的datasource显示为null --------------------编程问答--------------------
SqlConnection conn = new SqlConnection(conStr);
int index = this.dataGridView2.CurrentCell.RowIndex;
string readerID = this.dataGridView2.Rows[index].Cells["readerIDDataGridViewTextBoxColumn"].Value.ToString();
string strSQL = "Delete From ReaderInfo Where readerID= '" + readerID + "'";
try
{
conn.Open();
//此处加下面几句
SqlCommand cmd=conn.CreateCommand();
cmd.CommandText=strSQL;
cmd.ExecuteNonQuery(); //删除,不建议这样删除视图
conn.Close();
strSQL="SELECT * FROM ReaderInfo "; //需要重新绑定
SqlDataAdapter sda = new SqlDataAdapter(strSQL ,conn );
DataSet ds = new DataSet();
sda.Fill(ds, "ReaderInfo");
dataGridView2.DataSource = ds.Tables["ReaderInfo"];
MessageBox.Show("成功删除数据!");
}
我尝试了你改的代码,datasource的问题解决
但是会出现“System.NullReferenceException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。 --------------------编程问答-------------------- 我貌似发现我每次一用SqlCommand,就会出现“System.NullReferenceException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。 --------------------编程问答--------------------
SqlDataAdapter sda = new SqlDataAdapter(strSQL ,conn ); DataSet ds = new DataSet();
sda.Fill(ds, "ReaderInfo");
这个代码,strSQL中是删除语句,用来填充DS自然无效为NULL.
System.NullReferenceException 查询一下数据库中是否有NULL的字段处理上出问题. --------------------编程问答--------------------
改成您说的这样后,
dataGridView2.DataSource = ds.Tables["ReaderInfo"];
这句执行后就出现“System.NullReferenceException”类型的未经处理的异常出现
我实在是不知道怎么改了,可能是因为视图的关系,所以才会这样
之后我吧数据源改为显示整个表中属性的,就通过了 --------------------编程问答--------------------
"SELECT * FROM ReaderInfo "肯定不可能还有空字段,要是有的话也就是说他跟原表有关了 --------------------编程问答--------------------
还是出现“System.NullReferenceException”类型的未经处理的异常出现
这是要搞死人啊!
补充:.NET技术 , C#