2013-12-20 3 views
2

팝업이 표시되는 데 문제가 있습니다. 팝업을 표시하면 문제를 해결할 수 있습니다. 기본적으로 gridview가 있고 링크를 선택할 때 팝업에 나타나는 detailsview를 원합니다. 이것은 모두 objectdatasource를 사용하여 수행됩니다.Ajax ModalPopupExtender가 실행되지 않습니다.

참고 : modalpopupextender를 사용하지 않으면 그리드와 detailsview가 올바르게 작동합니다.

제 질문은 내 코드에서 내가 잘못하고있는 것을 말해 줄 수 있는지 또는 ajax modalpopupextender 구현을위한 더 나은 솔루션을 제공하는지 여부입니다.

는 ~이 내 마크 업 ~

<asp:Content ID="Content2" ContentPlaceHolderID="MasterContentPlaceHolder" Runat="Server"> 
<asp:ScriptManager ID="script1" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="updatePanel" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
    DataSourceID="ObjectDataSource1" AllowSorting="True" 
    CssClass="grid" CaptionAlign="Left" DataKeyNames="APP,ENV" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
    > 
    <Columns> 
     <asp:TemplateField ShowHeader="False" Visible = "false"> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
        CommandName="Select" Text="Select" Visible ="false"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="APP" SortExpression="APP"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" Visible = "false" Text='<%# Bind("APP") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:LinkButton ID="Label1" runat="server" CausesValidation ="false" CommandName="Select" Text='<%# Bind("APP") %>'></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="ENV" HeaderText="ENV" 
      SortExpression="ENV" /> 
    </Columns> 
</asp:GridView> 
</ContentTemplate> 
</asp:UpdatePanel> 
<asp:Panel ID="pnlPopup" runat="server" Width= "700px" style="display:none;"> 
<asp:UpdatePanel ID="detailspanel" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
    <asp:Button ID="btnShowPopup" runat="server" style="display:none" /> 
    <ajaxToolkit:ModalPopupExtender ID="mdlPopup" runat="server" 
     TargetControlID="btnShowPopup" PopupControlID="pnlPopup" 
     /> 
       <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
    DataSourceID="ObjectDataSource2" CssClass="detail" 
    > 
    <Fields> 
     <asp:BoundField DataField="APP" HeaderText="APP" 
      SortExpression="APP" /> 
     <asp:BoundField DataField="ENV" HeaderText="ENV" 
      SortExpression="ENV" /> 
     <asp:TemplateField ShowHeader="False"> 
      <EditItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" 
        CommandName="Update" Text="Update"></asp:LinkButton> 
       &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
        CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
        CommandName="Select" Text="Edit"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Fields> 
</asp:DetailsView> 
</ContentTemplate> 
</asp:UpdatePanel> 
</asp:Panel> 
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" 
    SelectMethod="GetApplication" 
    TypeName="Applications.BusinessServices.AppService" 
    DataObjectTypeName="Applications.Entities.Application" 
    UpdateMethod="Update"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="GridView1" Name="APP" 
      PropertyName="SelectedDataKey[0]" Type="String" DefaultValue="Null" /> 
     <asp:ControlParameter ControlID="GridView1" Name="ENV" 
      PropertyName="SelectedDataKey[1]" Type="String" DefaultValue=" Null" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
    SelectMethod="GetAllApplication" 
    TypeName="Applications.BusinessServices.AppAvailService" SortParameterName="sortColumn"> 
</asp:ObjectDataSource> 
</asp:Content> 

를 요약하기 위해하는 LinkButton LABEL1을 클릭하면 modalpopup가 나타나고 위해 DetailsView를 표시해야합니다의 단축 버전입니다.

이 ~이 ~

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (GridView1.SelectedIndex == -1) 
    { 
     GridView1.EnablePersistedSelection = true;   
    } 
} 
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    this.DetailsView1.Visible = true; 
    this.DetailsView1.DataBind(); 
    this.detailspanel.Update(); 
    this.mdlPopup.Show(); 

} 

}

I이 링크를 클릭하면 그 mdlPopup.Show()가 실행 않습니다 디버깅을 통해 확인했다

, 비주얼 스튜디오 오류를 등록하지 않습니다 내 코드 숨김입니다 . 그것은 아무 일도 일어나지 않는다는 것입니다.

또한 Btnshowpopup은 단지 가짜 버튼입니다. mdlpopup.show()를 호출하면 팝업이 계속 표시됩니다. 코드 숨김에서. 패널과 btnshowpopupp를 가시로 설정하고 버튼을 클릭하더라도 아무 일도 일어나지 않습니다.

도움을 주시면 감사하겠습니다. 감사.

+0

modelpopup 창을 여는 데 자바 스크립트를 사용해야합니까? – rach

+0

내가 본 예에는 자바 스크립트가 없습니다. 나는 단지 뭔가 잘못하고있다. – TimidObserver

+0

btnShowPopup에서 style = display : none을 제거해 보셨습니까? 당신이 마지막 단락에서 말하고있는 것입니까? – jadarnel27

답변

0

문제점을 해결했습니다. 나는 비슷한 문제가있는 누구에게나 그것을 나눌 것이라고 생각했습니다.

여러 사이트에서 12 개의 예제를 보았는데 문제가되지는 않지만 modalpopupextender를 updatepanel 외부로 가져 와서 문제가 해결되었습니다. 적어도 나를 위해, modalpopupextender는 발사를 위해 업데이트 판 외부에 있어야합니다.

관련 문제