datagridview多行删除问题
对选中的datagridview中的多行,不能正确删除,只能删除选定的最后一个,究竟问题出在哪?
代码:
private void btnDel_Click(object sender, EventArgs e)
{
int i = this.dataGridView1.SelectedRows.Count;
DialogResult dr = MessageBox.Show("删除后不能恢复,确实想删除这"+Convert.ToString(i) +"个用户信息吗?", "友情提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.Yes)
{
int t = 0;
try
{
for (int j = 0; dataGridView1.SelectedRows.Count > j; )
{
dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
}
DBCon oleCon = new DBCon();
string strSql = "delete from UserInfo where 姓名='" + username + "'";
t = oleCon.Updata(strSql);
if (t == 0)
{
MessageBox.Show("删除失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
string Sql = "select * from UserInfo";
ds = oleCon.Query(Sql);
this.dataGridView1.DataSource = ds.Tables[0];
MessageBox.Show("删除成功!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
return;
}
}
public int Updata(string strSql)
{
int t = 0;
using (OleDbConnection oleCon = new OleDbConnection(strCon))
{
oleCon.Open();
OleDbCommand oleCom = new OleDbCommand();
oleCom.Connection = oleCon;
oleCom.CommandText = strSql;
t = oleCom.ExecuteNonQuery();
}
return t;
}
------解决方案--------------------把数据库的删除代码放
for (int j = 0; dataGridView1.SelectedRows.Count > j; )
{
dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
}
这里面来.
------解决方案--------------------C# code
private void btnDelete_Click(object sender, EventArgs e)
{
//判断用户是否选择一行数据,true为没选择,false为选择
if (this.dgv.Rows[this.dgv.CurrentRow.Index].Cells[0].Value.ToString()=="")
{
MessageBox.Show("请选择一项进行删除");
}
else
{
//判断用户是否点击确定按钮,true为点击,false为没有点击
if (MessageBox.Show("确认删除?","提示", MessageBoxButtons.YesNo)==DialogResult.Yes)
{
//定义数组,用循环赋值
String[] array = new String[];
for (int i = 0; i < this.dgv.SelectedRows.Count; i++)
{
String str = this.dgv.Rows[this.dgv.SelectedRows[i].Index].Cells[0].Value.To