2011-10-14 4 views
0

안녕하세요. 이와 비슷한 질문을 많이했지만, 대화 상자를 페이지의 기본 폼으로 다시 추가하여 모두 해결되었습니다. 이것은 다음과 같은 문제가 해결되지 않습니다JQuery 대화 상자에 ASP.net 컨트롤 추가가 올바르게 렌더링되지 않습니다.

내 영문 파일에서를, 나는 다음과 같은 코드의 세그먼트를 정의했습니다 :

<asp:UpdatePanel runat="server" ID="RadAjaxPanel2" UpdateMode="always"> 
     <ContentTemplate> 
      <div id="areaFilterDialog" runat="server"> 
      </div> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

와 나는 대화를 초기화하려면 다음 자바 스크립트/jQuery를 가지고

$("#areaFilterDialog").dialog({ 
        bgiframe: true, 
        autoOpen: false, 
        resizable: false, 
        modal: true, 
        draggable: true, 
        closeOnEscape: true, 
        width: 630, 
        open: function (type, data) { 
         dialogOpen = true; 
         $(this).parent().appendTo("form"); 
        } 
       }); 
     }); 

부모 페이지의 양식에 대화 요소를 추가합니다. 다음과 같이 .cs 파일에서

, 나는 요소에 콘텐츠를 추가 :

var departmentCode = e.DepartmentCode; 
var summaryType = e.SummaryType; 
var summaryCode = e.SummaryCode; 
var totalName = e.TotalName; 
var view = this.TemplateControl.LoadControl(".\\WebControls\\FilteredAreaRadGrid.ascx") as FilteredAreaRadGrid; 

using (var businessManager = new BusinessManager(new DALConnection(this.DalConnectionString))) 
{ 
     view.DataSource = businessManager.GetData(departmentCode, summaryType, summaryCode, string.Empty); 
     this.AreaFilterDialog.Controls.Add(view); 
} 

을하고 난 스크립트 관리자 다음과 같은 시작 스크립트 등록하여 JQuery와 UI 대화 쇼를합니다

var script = string.Format("ShowAttendanceFilterPopup('{0}');", totalName); 
ScriptManager.RegisterStartupScript(
     this.Page, 
     this.Page.GetType(), 
     "tmp", 
     string.Format("<script type='text/javascript'>{0}</script>", script), 
     false); 
을 다음 자바 스크립트/jQuery를 호출

가 :

function ShowAttendanceFilterPopup(summaryName) { 
    $("#areaFilterDialog").data('title.dialog', summaryName); 
    $('#areaFilterDialog').dialog("open"); 
    $('#areaFilterDialog').dialog("enable"); 
} 

문제는 그 대화 상자에 추가 된 html은 실제로 페이지 상단에 추가되며 대화 상자는 전혀 표시되지 않습니다. 만약 내가 내가 그것을 보여주기 전에 대화 상자에 컨트롤을 추가하지 않으면 대화 상자가 올바르게 표시됩니다.

Telerik RadGrid가 포함 된 UserControl뿐 아니라 표준 asp 버튼을 사용하여이 기능을 추가했습니다.이 기능은 모두 동일한 동작을합니다.

누구나 내가 잘못하거나 더 잘하고있는 것에 대해 아이디어를 얻었습니까?이 문제에 대한 해결책은 무엇입니까?

고마워,

+1

firefox/firebug를 실행합니까? 여기서 무슨 일이 일어나고 있는지 정확히 파악할 수 있습니다. div를 업데이트하는 프로세스가 어떻게 든 대화 상자에 영향을 미친다는 것을 알고 있습니다. 방화 광을 사용하여 모든 단계에서 DOM을 검사하고 정확히 무슨 일이 일어나는지에 대한 통찰력을 얻을 수 있습니다. – mikey

+0

예 div에 올바르게 추가되었지만 스타일이 요소에 기인한다고해도 적용되지 않습니다. – rjbell00

답변

1

아마도 시도 :

<div id="areaFilterDialog"> 
    <asp:UpdatePanel runat="server" ID="RadAjaxPanel2" UpdateMode="always"> 
     <ContentTemplate></ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

은 내가 Telerik 아약스 패널을 사용하지 않는했지만 내가 좋아하는 뭔가를 추측하고있어 :

using (var businessManager = new BusinessManager(new DALConnection(this.DalConnectionString))) 
{ 
     view.DataSource = businessManager.GetData(departmentCode, summaryType, summaryCode, string.Empty); 
     RadAjaxPanel2.Controls.Add(view); 
} 

div를 AjaxPanel ContentTemplate에 넣고 뷰 컨트롤을 추가하면 그냥 보이지 않습니다. 나에게 맞아.

+0

UpdatePanel 객체의 Control 컬렉션을 직접 추가 할 수는 없지만 ContentTemplateContainer 객체의 Controls 컬렉션에 추가하면 작동합니다! 고마워요 :-) – rjbell00

+0

사실, 그건 작동하지 않습니다. 패널을 처음 업데이트 할 때 작동하지만 다시 업데이트하지는 않습니다 (조사되는 데이터가 정확하고 업데이트되지 않습니다). 어떤 아이디어? – rjbell00

+0

view.DataBind();가 필요했습니다. DataSource 속성을 재설정 한 후 나는이 대답을 정확한 90 %의 수정으로 표시 할 것입니다.건배! – rjbell00

관련 문제