0

親ページから新しい.aspxページを開くためにiframeを使用しています。子ページはajaxcontroltoolkit(ajax CalendarExtender)を使用しています。フォームの送信時に、iframeを閉じて親ページに戻りたいと思います。そのために私は次のコードを使用しています。

ClientScript.RegisterStartupScript(this.GetType(), "scriptid", window.parent.location.href='ViewVendors.aspx'", true);

これは、子ページからajaxコントロールを削除した場合にファイルを機能させますが、ajaxコントロールでは機能しません。calenderExtenderとiframeの両方を使いたいです。どのように使用できますか、そしてそのようないわゆる異常な動作の問題は何ですか。

これは、送信ボタンのイベントハンドラーのコードです。

protected void btnUpdate_Click(object sender, EventArgs e)
{
    try
    {
        objVendor.VendorID = Convert.ToInt64(Request.QueryString["Id"]);
        objVendor.Name = txtName.Text;
        objVendor.BillingAddress = txtBillingAddress.Text;
        objVendor.ShippingAddress = txtShippingAddress.Text;
        objVendor.ContactPersonName = txtContactPerson.Text;
        objVendor.ContactNumber = txtContactNumber.Text;
        objVendor.EmailID = txtEmailID.Text;
        objVendor.VendorSinceDate = Convert.ToDateTime(txtVendorDate.Text);
        objVendor.IsActive = Convert.ToBoolean(rdblStatus.SelectedValue);
        objVendor.Logo = FileUpload();
        int intResult = objVendor.UpdateVendor();
        if (intResult > 0)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "window.parent.location.href='ViewVendors.aspx'", "scriptid", true);
            //ClientScript.RegisterStartupScript(this.GetType(), "scriptid", "window.parent.location.href='ViewVendors.aspx'", true);
        }
    }
    catch (Exception ex)
    {
        lblMessage.Text = ex.Message;
        lblMessage.CssClass = "ERROR";
    }
}

//編集今すぐ子ページにカレンダーエクステンダーを追加しない限り、コードは正常に機能します。子ページにカレンダーエクステンダーを追加すると、「コントロールにコードブロック(つまり<%...%>)が含まれているため、コントロールコレクションを変更できません」というエラーが表示されます。カレンダーエクステンダーを外せば、やはりうまくいきます。グーグルを実行すると、Javascriptタグの<%%>が問題を引き起こしていることがわかりました。どうすればそれを解決できますか、そしてなぜそのような場合にカレンダー制御が問題を引き起こしているのですか?

これが私のスクリプトのコードです。

<script type="text/javascript">
    function uploadStarted() {
        $get("imgDisplay").style.display = "none";
    }
    function uploadComplete(sender, args) {
        var imgDisplay = $get("imgDisplay");
        //  var imgPhoto = $get("#imgPhoto");
        var imgPhoto = document.getElementById('<%=imgPhoto.ClientID %>');
        imgDisplay.src = "images/loader.gif";
        imgPhoto.style.display = "none";
        imgDisplay.style.cssText = "";
        var img = new Image();
        img.onload = function () {
            imgDisplay.style.cssText = "height:100px;width:100px";
            imgDisplay.src = img.src;
        };
        img.src = "<%=ResolveUrl(UploadFolderPath) %>" + args.get_fileName();

    }
</script>
4

1 に答える 1

1

ページのScriptManagerインスタンスを使用してJavaScriptを登録する必要があります。これは、AJAXを使用している場合はすでに持っているはずです。使用できる独自のRegisterStartupScriptメソッドがあります。

于 2012-06-26T12:57:01.560 に答える