【问题标题】:RadWindow not openingRadWindow 打不开
【发布时间】:2013-11-07 14:06:54
【问题描述】:

当我点击按钮时,RadWindow 没有打开

我的 javascript 代码:

<script type="text/javascript">
    function OpenURL(URL) {
        var oWnd1 = radopen(URL, "Detalhamento do Contrato");
        oWnd1.set_height("600px");
        oWnd1.set_width("600px");
        oWnd1.center();
        oWnd1.set_modal(true);

    }
</script>

我的 C# 代码:

    protected void RadGrid_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName.Equals("Detalhes"))
        {
            String Parametros = "ContratoNumero=" + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CONT_NUMERO"];
            Parametros += "&AditivoNumero=" + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CONT_NUMADITIVO"];
            Parametros += "&ContratoTipo=" + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["CONT_TIPO"];
            Parametros += "&Exercicio=" + this.txtExercicio.Text;

            string URL = "ContratoDetalhamento.aspx?" + Parametros;

            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "relatorio", String.Format("OpenURL('{0}','{1}');", URL, DateTime.Now.Ticks), true);
        }
    }

有人可以帮助我吗? 谢谢你现在

【问题讨论】:

  • 你有没有检查过javascript函数是否被调用(即:message("Arrives here")
  • 只是刷新页面,没有任何反应
  • 如果您在 javascript 函数的开头有 message("Arrives here") 并且现在显示了,则您的函数没有被调用。
  • 您可能会发现将debugger; 添加到您的javascript 函数的开头很有用,这将允许您逐步执行代码并提供更多信息来提醒用户。我假设您已经检查了明显的例如页面上有一个 RadWindowManager。
  • 当我希望我的服务器端代码触发 javascript 时,我使用以下代码:Page.ClientScript.RegisterClientScriptBlock(strScript.GetType(), String.Format("{0}_ScriptDescription", Me.ClientID), strScript, True) 其中strScript 是要运行的 javascript 代码。我知道这不是使用 ScriptManagers 时的最佳做法,但我发现使用其他方法可以让我控制触发代码的位置。

标签: c# javascript telerik radwindow


【解决方案1】:

你不见了:

oWnd1.SetActive();

【讨论】:

    【解决方案2】:

    1) 看这里正确执行脚本:http://www.telerik.com/help/aspnet-ajax/radwindow-troubleshooting-javascript-from-server-side.html.

    2) 在这里查看正确的 radopen() 语法:http://www.telerik.com/help/aspnet-ajax/window-programming-opening.html

    我会这样做:

    function OpenURL(URL) {
        var oWnd1 = radopen(URL, "RadWindowName");//note, no spaces
        oWnd1.setSize(600, 600);//width, height
        oWnd1.set_modal(true);//making it modal will center it by default
    
    }
    

    现在,请确保您执行的代码足够晚:

    string script = "function(f){openURL('url'); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "someKey", script, true);
    

    【讨论】:

      【解决方案3】:

      您好,我想与您分享我仅在 Javascript 代码中创建 RadWindow 对话框的解决方案。

      我们需要实现两种方法:一种用于初始化 RadWindow 对话框,最后一种用于接收关闭 RadWindow 后返回的参数。您可以在第二步中做您想做的事(例如回发,...)

      这是我的代码:

      初始化 RadWindow 对话框:

      function openMyDialog(url, args) {
          var manageWindow = GetRadWindowManager();
          if (manageWindow) {
              var radWindow = manageWindow.open(url, "<your_dialog_name>");
              if (radWindow) {
                  radWindow.set_initialBehaviors(Telerik.Web.UI.WindowBehaviors.None);
                  radWindow.set_behaviors(Telerik.Web.UI.WindowBehaviors.Move + Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Resize);
                  radWindow.setActive(true);
                  radWindow.SetModal(true);
                  radWindow.center();
                  radWindow.set_visibleStatusbar(false);
                  radWindow.set_keepInScreenBounds(true);
                  radWindow.set_minWidth(640);
                  radWindow.set_minHeight(480);
                  radWindow.setSize(640, 480);
                  radWindow.set_destroyOnClose(true);
                  radWindow.add_close(closeMyDialog);//after closing the RadWindow, closeMyDialog will be called
                  radWindow.argument = args;//you can pass the value from parent page to RadWindow dialog as this line
              }
          }
      }
      

      关闭 RadWindow 对话框:

      function closeMoveProjectDialog(sender, args) {
          var objArgs = args.get_argument();
          //objArgs variable stored the values returned from the RadWindow
          //you can use it for your purpose
      }
      

      这个怎么称呼?您可以将 open 方法放入您期望的方法中。在我这边,我有一个如下所示的方法,我会这样调用 RadWindow:

      function ShowForeignKeyFrontEditSingle(param1, param2){
          var url = "ForeignKeyFrontEditSingle.aspx";
          var objArgs = new Array();
          objArgs[0] = param1;
          objArgs[1] = param2;
      
          openMyDialog(url, objArgs);
          return;
      }
      

      当然,你必须声明一个 RadWindowManager 控件

      function GetRadWindowManager() {
          return $find("<%=your_radwindow_manager_control.ClientID%>");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-26
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多