为什么我根据ID号来删除,怎么一删就删两个的了
为什么我根据ID号来删除,怎么一删就删两个的了
public void Delete_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem Item in JDataGrid.Items)
{
if(((CheckBox)Item.FindControl( "chkDel ")).Checked)
{
DeleteRow(this.JDataGrid.DataKeys[(int)Item.ItemIndex-1].ToString());
}
}
Operater operater=new Operater();
DataSet ds=operater.executeDataSet(sql);
this.JDataGrid.DataSource=ds;
this.JDataGrid.DataBind();
operater.Close();
}
//实现删除
private void DeleteRow(string t)
{
string strCon = "server=.;database=ipsoon;uid=sa;password= ";
SqlConnection conn = new SqlConnection(strCon);
SqlCommand Cmd = new SqlCommand( "delete from PE_Article where ArticleID= ' "+t+ " ' ",conn);
conn.Open();
Cmd.ExecuteNonQuery();
conn.Close();
}
[解决办法]
察看运行出来的页面的代码源,可以发现CheckBox的ID是不同的,且不是chkDel
[解决办法]
设断点自己跟一下吧,呵呵
[解决办法]
你在那个事件里面删除不就行了还用这么麻烦了
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default5 : System.Web.UI.Page
{
//清清月儿http://blog.csdn.net/21aspnet
SqlConnection sqlcon;
string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa ";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl( "CheckBox1 ");
if (CheckBox2.Checked == true)
{
cbox.Checked = true;
}
else
{
cbox.Checked = false;
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
sqlcon = new SqlConnection(strCon);
SqlCommand sqlcom;
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl( "CheckBox1 ");
if (cbox.Checked == true)
{
string sqlstr = "delete from 飞狐工作室 where 身份证号码= ' " + GridView1.DataKeys[i].Value + " ' ";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
}
}
bind();
}
protected void Button1_Click(object sender, EventArgs e)
{
CheckBox2.Checked = false;
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl( "CheckBox1 ");
cbox.Checked = false;
}
}
public void bind()
{
string sqlstr = "select top 5 * from 飞狐工作室 ";
sqlcon = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
DataSet myds = new DataSet();
sqlcon.Open();
myda.Fill(myds, "tb_Member ");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "身份证号码 " };
GridView1.DataBind();
sqlcon.Close();
}
}
前台主要代码:
<asp:GridView ID= "GridView1 " runat= "server " AllowSorting= "True " AutoGenerateColumns= "False "
CellPadding= "3 " Font-Size= "9pt " BackColor= "White " BorderColor= "#CCCCCC " BorderStyle= "None " BorderWidth= "1px ">
<FooterStyle BackColor= "White " ForeColor= "#000066 " />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID= "CheckBox1 " runat= "server " />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField= "身份证号码 " HeaderText= "用户ID " SortExpression= "身份证号码 " />
<asp:BoundField DataField= "姓名 " HeaderText= "用户姓名 " SortExpression= "姓名 "/>
<asp:BoundField DataField= "家庭住址 " HeaderText= "家庭住址 " SortExpression= "家庭住址 "/>
</Columns>
<RowStyle ForeColor= "#000066 " />
<SelectedRowStyle BackColor= "#669999 " Font-Bold= "True " ForeColor= "White " />
<PagerStyle BackColor= "White " ForeColor= "#000066 " HorizontalAlign= "Left " />
<HeaderStyle BackColor= "#006699 " Font-Bold= "True " ForeColor= "White " />
</asp:GridView>
<asp:CheckBox ID= "CheckBox2 " runat= "server " AutoPostBack= "True " Font-Size= "9pt " OnCheckedChanged= "CheckBox2_CheckedChanged "
Text= "全选 " />
<asp:Button ID= "Button1 " runat= "server " Font-Size= "9pt " Text= "取消 " OnClick= "Button1_Click " />
<asp:Button ID= "Button2 " runat= "server " Font-Size= "9pt " Text= "删除 " OnClick= "Button2_Click " />
[解决办法]
sqlserver有自带的监察器,监测一下你的程序提交的所有的SQL语句,你就明白了