我是ASP.NET的新手,在使用RegisterStartupScript时遇到问题。
我有一个带有两个UserControl的页面。每个UserControl都有GridView,可以显示详细信息页面,就像this一样。

这是我的代码的一部分:

SenderUserControl.ascx

<script type="text/javascript">
function ShowInsertFormSender() {
    window.radopen("WebfrmManageMemo.aspx?RefType=S", "UserListDialog");
    return false;
}
function refreshGridSender(arg) {
    if (!arg) {
        $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindSender");
    }
    else {
        $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindAndNavigateSender");
    }
}
function RowDblClickReceiver(sender, eventArgs) {
    window.radopen("WebfrmManageMemo.aspx?RefType=S&MemoID=" + eventArgs.getDataKeyValue("MemoID"), "UserListDialog");
}




ReceiverUserControl.ascx

<script type="text/javascript">
function ShowInsertFormReceiver() {
    window.radopen("WebfrmManageMemo.aspx?RefType=R", "UserListDialog");
    return false;
}
function refreshGridReceiver(arg) {
    if (!arg) {
        $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindReceiverReferral");
    }
    else {
        $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>").ajaxRequest("RebindAndNavigateReceiverReferral");
    }
}
function RowDblClickReceiver(sender, eventArgs) {
    window.radopen("WebfrmManageMemo.aspx?RefType=R&MemoID=" + eventArgs.getDataKeyValue("MemoID"), "UserListDialog");
}




DetailView.aspx

<script type="text/javascript">
    function CloseAndRebindSender(args) {
        GetRadWindow().BrowserWindow.refreshGridSender(args);
        GetRadWindow().close();
    }

    function CloseAndRebindReceiver(args) {
        GetRadWindow().BrowserWindow.refreshGridReceiver(args);
        GetRadWindow().close();
    }

    function GetRadWindow() {
        var oWindow = null;
        if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
        else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well)

        return oWindow;
    }

    function CancelEdit() {
        GetRadWindow().close();
    }
</script>


DetailView.aspx.cs

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (Request["RefType"].ToString() == "S")
        {
            ScriptManager.RegisterStartupScript((sender as Control), GetType(), "closeSender", "CloseAndRebindSender('navigate');", true);
        }
        else if (Request["RefType"].ToString() == "R")
        {
            ScriptManager.RegisterStartupScript((sender as Control), GetType(), "closeReceiver", "CloseAndRebindReceiver('navigate');", true);
        }
    }


我的问题是,当我单击DetailView.aspx上的按钮时,ScriptManager.RegisterStartupScript((sender as Control), GetType(), "closeSender", "CloseAndRebindSender('navigate');", true);无法正常工作,但是ScriptManager.RegisterStartupScript((sender as Control), GetType(), "closeReceiver", "CloseAndRebindReceiver('navigate');", true);正常运行。

我在stackoverflow上搜索了有关RegisterStartupScript为什么不起作用的原因,并找到了这个question,但是我没有发现我的代码有问题。

我有什么想念的吗?
请帮忙。谢谢

最佳答案

我从question那里得到了答案。
问题出在Sender.ascx中的javascript。
我不知道发生了什么,但我解决了。

谢谢

10-04 11:29