请帮帮我! 我有1个apsx页面和2个uc。 从aspx可以打开radwindow包含uc 1,从uc 1可以打开uc 2.在aspx中,我有:
function CloseRadWindow()
{
if(GetRadWindowManager().getActiveWindow() == null)
{
refreshGridGiaoDuToan(); //this one refresh aspx page from uc 1
}
else
{
//i hope this one fresh uc1 after close uc2 but error
var wnd2 = GetRadWindowManager().getWindowByName("wndPopup2");
console.log(wnd2);
wnd2.get_contentFrame().contentWindow.refreshGridNhiemVu();
}
}
function refreshGridGiaoDuToan() {
$find("<%= pnGiaoNganSach.ClientID %>").ajaxRequest("SoGiao");
}
on uc 1我有
function refreshGridNhiemVu() {
alert("va");
$find("<%= pnGiaoNganSachChiTiet.ClientID %>").ajaxRequest("RefreshNhiemVu");
}
但是当我关闭uc 2时,总是出错:get_contentFrame()。contentWindow.refreshGridNhiemVu不是函数......
所以我的问题是如何在关闭uc2后刷新(在codebehind中调用函数)uc 1? 请帮我!谢谢!
答案 0 :(得分:1)
通常,这种方法是正确的。您必须确保引用了正确的RadWindow实例,并且可以添加一些检查函数是否存在以避免错误:
看到这个有几个可能导致错误引用的RadWindowManage:http://www.telerik.com/help/aspnet-ajax/window-troubleshooting-wrong-window-opened.html
请参阅此处有关创建父子层次结构的信息:http://www.telerik.com/support/code-library/creating-parent-child-relationships-between-radwindows-and-passing-data-between-them
这是在调用函数之前的一堆检查,可以避免错误:
if (wnd2.get_contentFrame && wnd2.get_contentFrame() &&
wnd2.get_contentFrame().contentWindow &&
wnd2.get_contentFrame().contentWindowrefreshGridNhiemVu) {
wnd2.get_contentFrame().contentWindow.refreshGridNhiemVu();
}
您可以使用typeof检查进行扩展,以确保变量在调用之前是一个函数。