说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

哎,搞了快一天了,这个删除的东东还是搞不出来,各位HELP ME?

编辑:说三道四文库 发布时间:2018-07-22 06:53
HTML文档下载 WORD文档下载 PDF文档下载
这使用的是DATAGRID的模板列,好象它无法判断选择框是选中的?
<asp:CheckBox ID="Remove" Runat="server"  />
<asp:Label Visible="False" ID="DelID" Runat="server"  Text='<%# DataBinder.Eval(Container,"DataItem.book_id") %>'>
</asp:Label>

private void DelBook_Click(object sender, System.EventArgs e)
{//删除记录     无法取得删除的 book_id
foreach (DataGridItem dg in book.Items)
{
if (((CheckBox)dg.FindControl("Remove")).Checked)
{
Response.Write("1230");
Label DelID = (Label) dg.FindControl("DelID");
string IDSql="delete from book where book_id="+Int32.Parse(DelID.Text);
SqlConn DBconn=new SqlConn();
DBconn.connstr="business";
DBconn.Exec(IDSql);  
        }
}
    }
function getID()
{
var arrChks = new Array();
arrChks     = GetChkVlas(document.getElementsByName('nchkID'));
}
/*-----------------------------------------------------------*/
/* 函数功能:返回选中的 checkbox 的值的数组 */
/* 参数chks:checkbox 控件数组              */
/* 返回值  :选中的 checkbox 的值的数组     */
/* 作者    :张小斌                         */
function GetChkVlas(chks)
{
  var arrChks = new Array();
  arrChks     = chks;
  
  var iNum   = arrChks.length;
  var arrVal = new Array();
  
  var j = 0;
  for(i=0;i<iNum;i++)
  {
    if(arrChks[i].checked)
    {
      arrVal[j] = arrChks[i].value;
      j++;
    }
  }
  
  return arrVal;
}
/**---------------------------------------------------------*/
怎么没人回答我的问题啊?
我都快疯了.........
function getID()
{
var arrChks = new Array();
arrChks     = GetChkVlas(document.getElementsByName('nchkID'));
}
/*-----------------------------------------------------------*/
/* 函数功能:返回选中的 checkbox 的值的数组 */
/* 参数chks:checkbox 控件数组              */
/* 返回值  :选中的 checkbox 的值的数组     */
/* 作者    :张小斌                         */
function GetChkVlas(chks)
{
  var arrChks = new Array();
  arrChks     = chks;
  
  var iNum   = arrChks.length;
  var arrVal = new Array();
  
  var j = 0;
  for(i=0;i<iNum;i++)
  {
    if(arrChks[i].checked)
    {
      arrVal[j] = arrChks[i].value;
      j++;
    }
  }
  
  return arrVal;
}
/**---------------------------------------------------------*/
我怀疑你写错了SqlConnection,前面判断Checkbox没有问题
或者你把IDSql打印出来看看.........
Label DelID = (Label) dg.FindControl("DelID");
string IDSql="delete from book where book_id="+Int32.Parse(DelID.Text);
SqlConn myConnection=new SqlConn();
    SqlCommand myCommand = new SqlCommand(IDSql);
    myCommand.Connection = myConnection;
    myConnection.Open();
    myCommand.ExecuteNonQuery();
    myCommand.Connection.Close();

语句是没有问题的
if (((CheckBox)dg.FindControl("Remove")).Checked)后的语句都执行不了
连Response.Write("1230");
都显示不出来,请问还有那里有误吗?


meetweb(niky),你好
他是没有执行IF里面的语句
freecs(红茗) ,你好

你能帮我写出来吗?
if (((CheckBox)dg.FindControl("Remove")).Checked)
这句实际上就是不执行。
得从前台想办法
给你个js文件CheckListClass,放在同一目录下即可不需要改动
--------------------
function CheckListClass()
{}
CheckListClass.prototype.checkSelectDel = checkSelectDel;
//验证列表页--删除
 function checkSelectDel(DataGridName)
{
var i;
         //这里的数一定要大于你在页面上的checkbox数量,你可以看一下页面执行后
         //checkbox的id的变化规律
for( i=0;i<20;i++)
{
var str = DataGridName + "__ctl" + i + "_CheckBox1";

if(document.getElementById(str)!=null && document.getElementById(str).checked==true)
{
break;
}
}
if(i==20)
{
alert("请选中所要删除的项!");
return false;
}
else
{
var tr = confirm("确实删除选中的项吗?");
return tr;
}
}

--------------------
aspx文件,需要改一下,把下面的代码放到<head>里
--------------------
                  //后面有解释 
                  <style>.disTd { DISPLAY: none }
</style>
                  //js的路径一定要写正确
<script language="javascript" src="CheckListClass.js"></script>
<script language="javascript">
                  //这句一定要有,实例化一个类,因为js写了一个类
var checks = new CheckListClass();
function delInfo()
{        
                           //传checkbox的id
if(!checks.checkSelectDel("NewsList"))
return false;
else
{
var idList="";
for(var i=0;i<20;i++)
{        
                                                       //这里要改一下
var str = "NewsList__ctl" + i + "_CheckBox1";

if(document.getElementById(str)!=null && document.getElementById(str).checked==true)
{        //这里要看你的模板里delid的位置,你这里是在checkbox的后面,所以用nextSibling,但是不能用visible=false隐藏,否则js找不到
var id = document.getElementById(str).parentElement.nextSibling.innerHTML;
if(idList=="")
idList=id;
else
idList=idList+","+id;
//这里也要改一下 location.href="News_List.aspx?IdToDel="+idList;

}
}



}
}
最后别忘了,要delete的button需要调用delInfo()

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘