private void tsbDelete_Click(object sender, EventArgs e)
{
if (this.dataGridView1.SelectedRows.Count == 1)
{
int delid = 0;
if (MessageBox.Show("确认要删除这条记录吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (this.dataGridView1.SelectedRows.Count > 0)
{
delid = int.Parse(this.dataGridView1.SelectedRows[0].Cells["Column7"].Value.ToString());
userManage.DelUser(delid);
dgvBind();
}
}
}
else
{
ArrayList li = new ArrayList(); for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
li.Add(dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString()); }
userManage.DelSelectedUser(li);
}
}
}
我想知道userManage.DelSelectedUser(li);这个方法是怎么写的。请根据userManage.DelUser(delid);这个方法我是这么写的:
public int DelUser(int delid)
{
int rows = 0;
using (SqlConnection myconn = new SqlConnection(stringconn))
{
SqlCommand mycomm = new SqlCommand("delete from files where id=@id", myconn);
mycomm.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)).Value = delid;
myconn.Open();
rows = mycomm.ExecuteNonQuery();
myconn.Close();
}
return rows;
}
{
if (this.dataGridView1.SelectedRows.Count == 1)
{
int delid = 0;
if (MessageBox.Show("确认要删除这条记录吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (this.dataGridView1.SelectedRows.Count > 0)
{
delid = int.Parse(this.dataGridView1.SelectedRows[0].Cells["Column7"].Value.ToString());
userManage.DelUser(delid);
dgvBind();
}
}
}
else
{
ArrayList li = new ArrayList(); for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
li.Add(dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString()); }
userManage.DelSelectedUser(li);
}
}
}
我想知道userManage.DelSelectedUser(li);这个方法是怎么写的。请根据userManage.DelUser(delid);这个方法我是这么写的:
public int DelUser(int delid)
{
int rows = 0;
using (SqlConnection myconn = new SqlConnection(stringconn))
{
SqlCommand mycomm = new SqlCommand("delete from files where id=@id", myconn);
mycomm.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)).Value = delid;
myconn.Open();
rows = mycomm.ExecuteNonQuery();
myconn.Close();
}
return rows;
}
解决方案 »
- 怎样实现“后退”?
- c#一个问题
- datagridview提示要有有效的Updatecommand
- 高手请进 dateTimePicker的问题啊
- 有没有人帮我马这段C#代码写个解密程序。现在给出加密代码,我是对C#不是很熟悉,如果能写成DELPHI的解密程序那就太感谢了.C#也可以的.
- radiobox的分组问题
- 我用C#自带的Ftp类取不到全部的文件列表
- 如何在RichTexBox中显示一个无限分类的树型结构?(解决即刻解贴!!!!!)
- DLL 的 引用问题
- 再来个简单的数据库连接。
- 各位各位 ,不知道各位在用vs2010的时候 ,装过没装过补丁之类的东西,遇到没遇到问题 。用vs2010的都来看看 。
- 应用程序关闭退出,快速释放资源的解决办法?
获取对象主键,再删除
你一个datagridview的列表,里面有复选框选择,你按了Ctrl建就删除你所选择的数据?
就是根据这种方法,写一个userManage.DelSelectedUser(li);
foreach (DataGridItem dele in this.dgInfo.Items)
{
CheckBox cb = (CheckBox)dele.FindControl("ckAll");
if (cb.Checked)
{
int ckID = Convert.ToInt32(this.dgInfo.DataKeys[dele.ItemIndex]);//获取每行Id
delno = this.dbc.ExecuteSql("delete from " + col + " Where infoid=" + ckID.ToString());
if (this.dgInfo.CurrentPageIndex > 0 && this.dgInfo.Items.Count == 1) this.dgInfo.CurrentPageIndex--; }
}
可以根据userManage.DelUser(delid);这个方法写,多谢。
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
li.Add(dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString());
userManage.DelUser(dataGridView1.SelectedRows[i].Cells["ID列"].Value.ToString());
}
}
不过这样效率不高.毕竟循环判断DG所有行,如果选择一条,就删除一条.也就是执行SQL语句一次.速度很慢```
foreach (DataGridItem dele in this.dgInfo.Items)
{
CheckBox cb = (CheckBox)dele.FindControl("ckAll");
if (cb.Checked)
{
list.Add( this.dataGridView1.SelectedRows[0].Cells["Column7"].Value.ToString()));
}
}
循环后删除
for(int i=0;i<list.item.count;i++){
userManage.DelUser(list[i]);
}
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString(); }
}
userManage.DelSelectedUser(li);//放在循环外DelSelectedUser()
只要把DelUser里面的SQL语句的条件改成id in (str)
{
int rows = 0;
using (SqlConnection myconn = new SqlConnection(stringconn))
{
StringBuilder sql=new StringBuilder ("delete from files where id="+al[0]);
for(int i=1;i<al.Count;i++)
{
sql.Append(" or id=" + al[i]);
}
SqlCommand mycomm = new SqlCommand(sql.ToString(), myconn);
myconn.Open();
rows = mycomm.ExecuteNonQuery();
myconn.Close();
}
return rows;
}
public int DelSelectedUser(ArrayList li)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < li.Count; ++i)
{
sb.Append(string.Format(",{0}", li[i].ToString()));
}
int rows = 0;
using (SqlConnection myconn = new SqlConnection(stringconn))
{
SqlCommand mycomm = new SqlCommand("delete from files where id in("+sb.ToString(1,sb.Length-1)+")", myconn);
myconn.Open();
rows = mycomm.ExecuteNonQuery();
}
return rows;
}
{
int rows = 0;
SqlConnection myconn = new SqlConnection(stringconn);
SqlTransaction transaction = null;
try
{
myconn.Open();
transaction = myconn.BeginTransaction(IsolationLevel.ReadCommitted); SqlCommand command = new SqlCommand();
command.Connection = myconn;
command.Transaction = transaction; for (int i = 0; i < al.Count; i++)
{
command.CommandText = "delete from files where id=" + al[i];
try
{
rows += command.ExecuteNonQuery();
}
catch
{
continue;
}
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
finally
{
connection.Close();
transaction.Dispose();
}
return rows;
}
public int DelSelectedUser(ArrayList li)
{
StringBuilder sb = new StringBuilder("-1");
for (int i = 0; i < li.Count; ++i)
{
sb.Append(string.Format(",{0}", li[i].ToString()));
}
int rows = 0;
using (SqlConnection myconn = new SqlConnection(stringconn))
{
SqlCommand mycomm = new SqlCommand("delete from files where id in("+sb.ToString()+")", myconn);
myconn.Open();
rows = mycomm.ExecuteNonQuery();
}
return rows;
}
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString(); }
}
userManage.DelSelectedUser(li);//放在循环外
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.SelectedRows[i].Selected == true)
{
str = ","+dataGridView1.SelectedRows[i].Cells["Column7"].Value.ToString(); }
}
userManage.DelSelectedUser(li);//放在循环外