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

一个Web用户控件中js的问题,分不够另开帖给
感谢您的关注,请您在回答前仔细看下我的描述


我在母版页里有一个Web用户控件detail.ascx,detail.ascx里有一个删除按钮BtnDelete和一个datagrid,选中datagrid中一条记录,BtnDelete可用,此时要先去数据库中查询一个INVENT_FLAG,判断是否处于盘点中,为1则弹出一个alert窗口,为0则弹出一个confirm窗口,询问是否删除,是则删除,取消则不动作,关键是要根据点击按钮那一时刻的INVENT_FLAG的状态进行判断,所以不能在Page_Load里
BtnDelete.Attributes.Add(   "onclick ",   "return   confirm(   '确实要冲掉该条记录吗? '   ); ");

说一下我现在的实现方式,再加一个按钮BtnCheck,然后将BtnDelete用style= "display:none "隐藏,在BtnCheck里检查INVENT_FLAG的状态,当confirm选确定时,调用BtnDelete的Click事件,在BtnCheck_Click中

if(   invent_flag   ==   "1 ")
{
Page.RegisterStartupScript( "check ", " <script> alert( '盘点中,不可进行入库操作。 '); </script> ");
}
else
{
Page.RegisterStartupScript( "fgf ", " <script> Check(); </script> ");
}

html中
<script   language= "javascript ">
          function   Check()
          {
                  if   (window.confirm( '是否保存所作的修改? ')==true)                
                  {
                          document.getElementById( "detail_BtnDelete ").click();
                  }
                  else
                  {
                  }
          }
</script>

但是这里脚本调试时提示Microsoft   JScript   运行时错误:   'document.getElementById(...) '   为空或不是对象
我换成document.all( "detail_BtnDelete ").click();提示Microsoft   JScript   运行时错误:   'contentWindow.document '   为空或不是对象
我直接在ascx.cd里用
string   btnName   =   BtnDelete.ClientID;
Page.RegisterStartupScript( "fgf ", " <script> if(window.confirm( '是否保存所作的修改? ')==true){document.getElementById( "+btnName+ ").click();} </script> ");
都不行,网上能搜索到的我基本上都试过了,请问怎么调用BtnDelete的Click事件,或是怎么得到BtnDelete的ClientID


或者有其它的实现方法也可以,对js不熟,被郁闷了好几天了,谢谢大家了

------解决方案--------------------
<script language= "javascript ">
function Check()
{
if (window.confirm( '是否保存所作的修改? ')==true)
{
document.all.detail_BtnDelete.click()
}
else
{
}
}
</script>

另外要注意一点 不要用style= "display:none "把控件设置成隐藏 !

要style= "width: 0px; height: 0px " 让他宽高 等于0来达到效果 ! 你试一下!

如果解决 记得回贴!帮我生星
------解决方案--------------------
document.getElementById( <%= 控件ID.ClientID%> ).click();

------解决方案--------------------
你这个功能我做过
我是配合ajax做的

btnDel.Attributes.Add( "onclick ", "return check() ");//这句仍然放在Page_Load

javascript 的check()方法里 用ajax取数据库值看是否满足需要 在进行btnDel里的操作