下面代码错在哪,为什么只要在大量添加信息的时候,这里就出错!!
下面代码错在哪,为什么只要在大量添加信息的时候,这里就出错!!
如果不进行大量添加信息的时候,这里的多选操作都很正常,一大量添加信息的时候
操作就乱了,明明的是选的这几个ID,却删除了另外几个ID,怎么回事呢
protected void Btn_Do_Click(object sender, EventArgs e)
{
string keyValues = " ";
for (int i = 0; i < Repeater.Items.Count; i++)
{
CheckBox chkbox = (CheckBox)Repeater.Items[i].FindControl( "op ");
if (chkbox!=null)
{
if (chkbox.Checked == true)
{
string key = ((Label)Repeater.Items[i].Controls[2]).Text + ", ";
keyValues = keyValues + key;
}
}
}
if (keyValues != " ")
{
keyValues = keyValues.Substring(0, keyValues.Length - 1);
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings[ "sqlcon "]);
con.Open();
string nowtime = DateTime.Now.ToString();
string op = ddl_op.Text.ToString();
string cmdsql = " ";
if (op == "del ")
{
cmdsql= "delete from " + tablename + " Where id in ( " + keyValues + ") "; //生成Sql 语句。
}
//Response.Write(cmdsql);
//return;
SqlCommand cmd = new SqlCommand(cmdsql, con);
cmd.ExecuteNonQuery(); //执行sql语句。
con.Close();
//得到当前页参数以便返回
string str_Return = GetStrReturn().ToString();
if (str_Return != " ")
{
str_Return = str_Return.Replace( "& ", pagename + "? ");
}
else
{
str_Return = pagename;
}
Response.Write(ShowOPInfo( "操作成功! ", str_Return));
}
else
{
//得到当前页参数以便返回
string str_Return = GetStrReturn().ToString();
if (str_Return != " ")
{
str_Return = str_Return.Replace( "& ", pagename+ "? ");
}
else
{
str_Return = pagename;
}
Response.Write(ShowOPInfo( "请选择操作项目! ", str_Return));
}
}
[解决办法]
看代码,没有比较显眼的错误,建议你单步调试下,看看拼接id是否正确
[解决办法]
我那个帖子,其实是让你用客户端的checkbox(将记录id绑定在上面,类似 <asp:BoundColumn DataField= "ID " HeaderText= "<input type= 'checkbox ' id= 'SelectAll ' onclick= 'onClickSelectAll() '> "
DataFormatString= "<input type= 'checkbox ' id= 'SelectItem ' name= 'SelectItem ' onclick= 'onClickSelectItem() ' value={0}> ">
<HeaderStyle Width= "15px "> </HeaderStyle>
</asp:BoundColumn> )然后使用request.params[ 'checkboxname ']在后台得到选中的checkbox对应的记录id
[解决办法]
如果没有命名控件的话,asp.net运行时会以其所在名称包含器为基础对控件按其进入控件树的顺序进行固定规则的命名