0

iframe을 사용하여 상위 페이지에서 새 .aspx 페이지를 엽니 다. 하위 페이지에서 ajaxcontroltoolkit (ajax CalendarExtender)을 사용하고 있습니다. 이제 양식을 제출할 때 iframe을 닫고 상위 페이지로 돌아가고 싶습니다. 이를 위해 다음 코드를 사용하고 있습니다. 내가 자식 페이지에서 아약스 컨트롤을 제거하지만 아약스 컨트롤을 작동하지 않을 경우window.parent.location.href asp.net의 ajaxcontroltoolkit과 호환되지 않습니다.

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

이 파일을 사용할 수 있습니다. 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"; 
    } 
} 

// 편집 지금 내 코드는 한 내가 자식 페이지에 달력 익스텐더를 추가하고 있지 않다으로 잘 작동합니다. 하위 페이지에 캘린더 익스텐더를 추가하면 "컨트롤에 코드 블록 (예 : < % ... %>)이있어 컨트롤 컬렉션을 수정할 수 없습니다."라는 오류 메시지가 표시됩니다. 캘린더 익스텐더를 제거하면 다시 잘 작동합니다. Google 검색 중 일부를 수행하여 자바 태그에서 < %%>가 문제를 일으키는 것으로 나타났습니다. 그런 문제를 어떻게 해결할 수 있으며 이러한 경우 캘린더 제어가 문제를 일으키는 이유는 무엇입니까?

다음은 내 스크립트 코드입니다. 당신이 AJAX를 사용하는 경우 당신이 이미 가지고해야하는 -

<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> 

답변

1

당신은 당신의 페이지에 ScriptManager 인스턴스를 사용하여 자바 스크립트를 등록해야합니다. 사용할 수있는 자체 RegisterStartupScript 메서드가 있습니다.

+0

Scriptmanager의 인스턴스에 RegisterStartupScript 메서드가 표시되지 않습니다. 예를 들어 자세히 설명해 주시겠습니까? 여기에 scriptmanatger의 인스턴스가 있습니다.

+0

정적 메소드이므로 다음과 같은 코드로 호출 할 수 있습니다 :'System.Web .UI.ScriptManager.RegisterStartupScript (...)' –

+0

..이 ScriptManager.RegisterStartupScript (this.Page, this.GetType(), "window.parent.location.href = 'ViewVendors.aspx", "scriptid ", 사실); 여전히 작동하지 않습니다. 부모 페이지 인 ViewVendors.aspx 페이지로 리디렉션하고 싶습니다. 내 코드에서 무엇이 잘못 되었습니까? –