我是想通过在点击网页某一按钮时,调用C#事件响应函数,以执行一个javascript函数,可是怎么弄都有错,要么是“无效指针”,要么就是“语法错误”,但我在登录页中采用同样的方式调用就没有问题。看了前面各位大虾发的帖子,以为是smartnavagation惹的祸,但是我关掉还是不行,郁闷啊!
    哪位大哥帮帮忙啊!

解决方案 »

  1.   

    private void btnClear_Click(object sender, System.EventArgs e)
    {
    if(!this.IsClientScriptBlockRegistered("cancel"))
    {
    this.RegisterStartupScript("cancel","<script language=javascript>window.self.location.href=Admin_MainForm.aspx;"); }
    }
      

  2.   

    小兄弟,我来帮帮你吧1.首先你要确认你的按纽是在服务器端运行的,即有个绿色的小箭头,因为这样才能响应你的C#事件2.然后双击那个按纽,要在响应函数里执行JS了,这个方法就很多了,比如  response.write("<script>alert('I am a hero, hahaha!')</script>");试试吧
      

  3.   

    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language=javascript>window.self.location.href=Admin_MainForm.aspx;");
    }这样应该可以的。
      

  4.   

    方法很多this.ImageButton1.Attributes.Add("onclick","return check()");
    this.ImageButton2.Attributes.Add("onclick","openwin2()");
      

  5.   

    Button3.Attributes.Add("onclick","javascript:MoveItem()");用这样试试
      

  6.   

    上面几位的方法都试过,结果如下:
    starchenzhi的方法提示:“无效指针”
    swordragon的则提示:“语法错误”
    this.ImageButton1.Attributes.Add("onclick","return check()");的方法则可以
    我还试了这个方法也可以:
    public void AlertSetRight(string str_Message,Admin_SetRight sr) 

    sr.RegisterStartupScript("","<script>alert('"+str_Message+"');</script>"); 

    然后在函数中调用它,这样也可以执行。
    现在的关键是,我需要采用前面的两种方法,知道为什么这两种就不行吗?
      

  7.   

    上面那个函数中,Admin_SetRight是窗体类的名字。
      

  8.   

    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language=javascript>window.open('Admin_MainForm.aspx');");
    }
      

  9.   

    或者:
    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language=javascript>window.self.location.href='Admin_MainForm.aspx';");
    }
      

  10.   

    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language=javascript>window.self.location.href=Admin_MainForm.aspx;");
    }
    ==>
    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language='javascript'>window.self.location.href='Admin_MainForm.aspx';</script>");
    }
      

  11.   

    swordragon的两种办法都提示语法错误
    但是如果都用this.btnClear.Attributes.Add("window.open('Admin_MainForm.aspx');");则可以
    知道是什么原因吗?
      

  12.   

    现在我总结起来就是:
    用RegisterClientScriptBlock()
    或者RegisterStartupScriptBlock()
    会提示“语法错误”
    用Response.Write()的方式会提示“无效指针”
    而用Attributes.Add()的方法则可以
    有人遇到过这样的情况吗?
      

  13.   

    哈哈,原来是少了</script>!!!
      

  14.   

    应该注意RegisterStartupScript与RegisterClientScriptBlock的区别
    还有就是调用javascript函数的位置,是在提交dopostback之前还是dopostback之后
      

  15.   

    private void btnClear_Click(object sender, System.EventArgs e)
    {
        Page.RegisterClientScriptBlock("cancel","<script language='javascript'>window.open('Admin_MainForm.aspx');</script>");    Page.RegisterClientScriptBlock("cancel","<script language='javascript'>window.self.location.href='Admin_MainForm.aspx';</script>");
    }
      

  16.   

    还有一种间接的办法也可以:
    public void AlertSetRight(string str_Message,Admin_SetRight sr) 

    sr.RegisterStartupScript("","<script>alert('"+str_Message+"');</script>"); 

    然后在事件处理函数里处理也可以
    我现在主要是想知道
    为什么像刚才两种方法就可以
    另外的方法就不行?