使用的第三方控件Rad Controls 的RadGrid(类似标准的DataGrid)
在使用RadGrid_DeleteCommand删除一行时,由于要做引用检查,如果不能删除则提示用户

private void RadGrid_DeleteCommand(object source, GridCommandEventArgs e)
{
    //如果不能删
    Response.Write("<script>alert('xxx');</script>");//没有用
    
    page.RegisterStartupScript(key,脚本);//也没有用    ClientScriptManager sm = this.ClientScript;
    sm.RegisterClientScriptBlock(this.GetType(), "hwj383", "alert('fdsf');",true);//也没有用
 
    ScriptManager.RegisterStartupScript(this, this.GetType(), "hwj383", "alert('ddd')", true);//也没有用
}
但是怎么也弹不出提示框求解,或者给一个变通的方法

解决方案 »

  1.   


            /// <summary>
            /// 显示消息
             /// </summary>
            /// <param name="message">消息内容</param>
            public void ShowMessage(string message)
            {
                message = message.Replace("'", "").Replace("\"", "")
                    .Replace("{", "(").Replace("}", ")").Replace("\n", "");
                string strFormat = "<script>javascript:alert('{0}')</script>";            Response.Write(String.Format(strFormat, message));
            }        /// <summary>
            /// 显示消息,用于使用UpdatePanel的情况
             /// </summary>
            /// <param name="message">消息内容</param>
            public void AJAXShowMessage(string message)
            {
                message = message.Replace("'", "").Replace("\"", "")
                    .Replace("{", "(").Replace("}", ")").Replace("\n", "");
                string strFormat = "alert('{0}')";
                strFormat = String.Format(strFormat, message);            ScriptManager.RegisterStartupScript(this, this.GetType(), System.Guid.NewGuid().ToString("N").Substring(1, 4), strFormat, true);
            }
      

  2.   

    控件没用过。一般用gridview是加入一个按钮列
    private void infolist_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
       if(e.Item.ItemType!=ListItemType.Header&& .Item.ItemType!=ListItemType.Footer)
       {
          LinkButton deleteButton = (LinkButton) e.Item.Cells[4].Controls[0];
          deleteButton.Attributes["OnClick"]="return confirm('你确认要删除吗?')";
       }
    }
      

  3.   


    有用吗?不过看起来和我的代码没啥区别呢?
    我没有用到UpdatePanel
      

  4.   

    外面弄个控件label.Text = "<script>alert('ddd');</script>"
      

  5.   

    要触发啊。。你注册的脚本是没有错的。。要触发才可以啊。。临时写是不会出来的。。看看 web page 的执行流程啊。。
      

  6.   

    原因找到了,是这样的,由于是用的第3方控件RadControls,支持ajax无刷新Grid,所以Response.Write无法输出,当然RegisterStartupScript也不能注册,去掉ajax支持,则没有问题,求个变通的方法另试试6楼的方法
      

  7.   

      sm.RegisterClientScriptBlock(this.GetType(), "hwj383", "alert('fdsf');",true);//也没有用     ScriptManager.RegisterStartupScript(this, this.GetType(), "hwj383", "alert('ddd')", true);//也没有用 "alert('fdsf');"必须改成<script>alert('fdsf');</script>;这样的
      

  8.   

    有没有可能是事件没有注册,或是没有触发.或是冒泡到RadGrid之后,grid根本没有处理
    由于是第三方控件.可能要多检查一下
    先去 RadGrid_DeleteCommand看看,如果是e.Command之类的 等于 Delete
      

  9.   


    我跟代码是执行了的,我想原因是这样的吧:
    由于是用的第3方控件RadControls,支持ajax无刷新Grid,所以Response.Write无法输出,当然RegisterStartupScript也不能注册(或者像7楼的朋友说的没有触发),去掉ajax支持,则没有问题 
      

  10.   

                            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "clientScript", "alert('验证码有误,请重新输入。!');", true);
    我的怎么好用呢。
    这是微软ajax里面的
      

  11.   

    没看见人家说的是用了的第三方控件Rad Controls 吗?