编程语言
首页 > 编程语言> > Telerik RadWindow Javascript将值返回到ASP.NET

Telerik RadWindow Javascript将值返回到ASP.NET

作者:互联网

我有一个父页面,它启动telerik radwindow并传递一个参数.

radwindow处理完该值后,我需要它将其返回到父页面,并且我希望父页面能够在页面后面的代码中访问此值.

我试图将值传递给页面上的隐藏字段,然后触发页面刷新,并监视代码,以查看该值是否有效.

我似乎无法使它正常工作.我在父javascript中获得了返回值,但是我无法从后面的代码中的隐藏字段中获得返回值.

我什至像我需要的那样将其放入文本框中,但是当我在后面的代码中找到“隐藏”字段时,没有设置任何值.

在设置警报的地方,我会根据需要显示值.

我怀疑在文件后面的代码中看不到我的返回值的原因是,刷新页面时,我得到的是新页面,而不仅引起回发.

还有没有更好的方法可以做到这一点.

这是我在父页面中的代码:

父ASPX:

<script type="text/javascript">
    function OpenWnd() {
        var oWnd = radopen(null, "RadWindow1");
    }
    function OnClientShow(oWnd) {
        //Create a new Object to be used as an argument to the radWindow
        var arg = new Object();
        //Using an Object as a argument is convenient as it allows setting many properties.
        arg.text = document.getElementById("TextBox1").value;
        //Set the argument object to the radWindow  
        oWnd.Argument = arg;
    }

    function ClientCallBackFunction(radWindow, returnValue) {
        //check if a value is returned from the dialog
        if (returnValue.newtext) {
            document.getElementById("Hidden1").value = returnValue.newtext;
            alert("HiddenValue: " + document.getElementById("Hidden1").value);
        }
    }
</script>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<div>
    <telerik:RadWindowManager ID="RadWindowManager2" runat="server">
        <Windows>
            <telerik:RadWindow ID="RadWindow1" runat="server" OnClientShow="OnClientShow" ClientCallBackFunction="ClientCallBackFunction"
                NavigateUrl="Dialog2.aspx" />
        </Windows>
    </telerik:RadWindowManager>
</div>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<input type="button" value="Send content to dialog page" onclick="OpenWnd()" />
<p>
    <input id="Hidden1" type="hidden" runat="server" />
</p>
</form>

后面的父代码:

        protected void Page_Load(object sender, EventArgs e)
    {
        HtmlInputHidden hidden = (HtmlInputHidden)Page.FindControl("Hidden1");

        if (IsPostBack && !string.IsNullOrEmpty(hidden.Value))
        {
          //Code Here
        }
    }

这是我的对话框代码:

对话框ASPX:

  <script type="text/javascript">
        function GetRadWindow() {
            var oWindow = null;
            if (window.radWindow) oWindow = window.radWindow;
            else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
            return oWindow;
        }
        function ConfigureDialog() {
            //Get a reference to the radWindow wrapper
            var oWindow = GetRadWindow();
            //Obtain the argument 
            var oArg = oWindow.Argument;
            //Use the argument
            var oArea = document.getElementById("TextBox1");
            oArea.value = oArg.text;
        }
        function SendAndClose() {
            var oWindow = GetRadWindow();
            //Get current content of text area
            var arg = new Object();
            arg.newtext = document.getElementById("TextBox1").value;
            oWindow.Close(arg);
            RefreshParentPage();
        }
        function RefreshParentPage() {
            GetRadWindow().BrowserWindow.location.reload();

            alert("RefreshParentPage");
        }
    </script>

谢谢你的帮助

伊恩

解决方法:

您正在执行以下操作

GetRadWindow().BrowserWindow.location.reload(); 

但这不会导致回发,它只会重新加载父页面,您需要引起回滚.
您可以尝试将样式设置为’display:none’的按钮添加到父表单,并处理后面代码中的click事件,您可以从js代码中触发此按钮.

在父页面中:

<asp:Button runat="server" id="btnClick" Style="display:none"    OnClick="btnClick_Click"/>

protected void btnClick_Click(object sender,EventArgs e)
{
     string val = this.Hidden1.Value; //Code goes here
}

您可以像这样(非jQuery)从JavaScript调用,并将其放入回调中

document.getElementById('<%= btnClick.ClientID').click();

标签:return-value,telerik,postback,asp-net,javascript
来源: https://codeday.me/bug/20191106/2001874.html