Any*_*are 6 javascript c# asp.net telerik radwindow
我想关闭RadWindow并刷新父级:如何执行此服务器端:
我有以下情况:
两页说:
<telerik:RadWindowManager ID="RadWindowManager1" runat="server" EnableViewState ="false">
</telerik:RadWindowManager>
Run Code Online (Sandbox Code Playgroud)
和parent.cs
protected void OpenNewWindow(string url, int width, int height,int mode)
{
RadWindow newWindow = new RadWindow();
newWindow.NavigateUrl = url;
newWindow.VisibleOnPageLoad = true;
newWindow.KeepInScreenBounds = true;
if (width > 0)
{
newWindow.Width = width;
}
if (height > 0)
{
newWindow.Height = height;
}
newWindow.VisibleStatusbar = false;
if (mode == 0)
{
newWindow.DestroyOnClose = true;
newWindow.InitialBehaviors = WindowBehaviors.Maximize;
}
RadWindowManager1.Windows.Add(newWindow);
}
Run Code Online (Sandbox Code Playgroud)
我在我的父页面上的某个gridview的rowcommand中调用此方法:
像这样 :
OpenNewWindow("child.aspx", 0, 0,0);
Run Code Online (Sandbox Code Playgroud)
现在我想在服务器端单击child页面上某个按钮的事件来关闭rad窗口并刷新父窗口如何做到这一点?
正如你所说,你想要从背后的代码关闭.所以你可以Page.ClientScript.RegisterClientScriptBlock(GetType(), "CloseScript", "refreshParentPage()", true);从后面的代码渲染来刷新父代.
只需在子页面中添加以下代码和脚本即可.父页面中不需要代码.
<script>
function getRadWindow() {
var oWindow = null;
if (window.radWindow)
oWindow = window.radWindow;
else if (window.frameElement.radWindow)
oWindow = window.frameElement.radWindow;
return oWindow;
}
// Reload parent page
function refreshParentPage() {
getRadWindow().BrowserWindow.location.reload();
}
</script>
<asp:Button runat="server" Text="Close" ID="CloseButton"
OnClick="CloseButton_Click"/>
protected void CloseButton_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptBlock(GetType(),
"CloseScript", "refreshParentPage()", true);
}
Run Code Online (Sandbox Code Playgroud)
更新:
// Redirect page page to url
function redirectParentPage(url) {
getRadWindow().BrowserWindow.document.location.href = url;
}
// Code behind
Page.ClientScript.RegisterClientScriptBlock(GetType(),
"CloseScript", "redirectParentPage('Parent.aspx')", true);
Run Code Online (Sandbox Code Playgroud)
您应该使用getRadWindow().close()方法和OnClientClose事件.
在Child.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 clientClose(arg) {
getRadWindow().close(arg);
}
</script>
Run Code Online (Sandbox Code Playgroud)
在Child.cs中:
protected void btn_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(Page, typeof(Page), "closeScript", "clientClose('');", true);
}
Run Code Online (Sandbox Code Playgroud)
在Parent.cs中创建RadWindow时,添加OnClientClose事件:newWindow.OnClientClose = "OnChildWindowClosed";.
在Parent.aspx上:
<script type="text/javascript">
function OnChildWindowClosed(sender, eventArgs) {
document.location.reload(); // there may be a cleaner way to do the refresh
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28509 次 |
| 最近记录: |