日期:2014-05-18  浏览次数:20377 次

Gridview 一次删除多条记录的问题
Gridview   在外部有个   deleterow(rowindex)   的方法可以删除一条记录,但是如果想一次删除多记录,该怎么写代码?   还引申出一个   Gridview   能不能、怎么样同时选择多条记录的问题。
        请问大家是怎么做的,有关键代码或想法都行。谢谢!!

------解决方案--------------------
在每一行前加一个复选框,点击外部的删除按钮时,遍历GridView的每一行,如果状态为选中,则删除
------解决方案--------------------
for (int i = 0; i < GridView1.Rows.Count; i++)
{
string id= " ";
GridViewRow row = GridView1.Rows[i];
bool ischecked = ((CheckBox)row.FindControl( "CheckBox1 ")).Checked;
if (ischecked)
{
id= GridView1.DataKeys.Value.Trim();
string sqlDelete= " delete tabelName where id= ' "+id+ " ' ";
}


}
------解决方案--------------------
补充:正如amandag(高歌) 说的要在GridView1增加一个复选框CheckBox1
------解决方案--------------------
我可没说让这些CheckBox的AutoPostBack属性设置为真啊

我们肯定是在GridView的外面点击一个按钮去做删除的
------解决方案--------------------
up
------解决方案--------------------
AutoPostBack如果设置为False,是不是就是操作完以后不立即刷新页面呢?
------解决方案--------------------
<asp:TemplateField SortExpression= "JobNo ">
<ItemTemplate>
<asp:CheckBox ID= "CheckBox " runat= "server " />
</ItemTemplate>
</asp:TemplateField>

protected void btnDele_Click(object sender, EventArgs e)
{

foreach (GridViewRow row in GridView1.Rows)
{
CheckBox ck = (CheckBox)row.FindControl( "CheckBox ");
if (ck.Checked)
{
strid = GridView1.DataKeys[row.RowIndex].Value.ToString();
}
string sql = "delete from cwpayi where id= ' " + strid + " ' ";
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings[ "connectionString "]);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
//cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
}
//从定向到页面。
// Response.Write( " <script language= 'javascript '> window.parent.mainFrame.location.href= 'feeDetail.aspx '; </script> ");
}