2013-12-20 4 views
2

У меня возникла проблема с появлением всплывающего окна. Как только я получу всплывающее окно, чтобы показать его, я могу устранить проблему. В принципе, у меня есть gridview, и я хочу, чтобы в моем всплывающем окне появилось подробное представление, когда я выбираю ссылку. Все это делается с использованием objectdatasource.Ajax ModalPopupExtender не стреляет

Примечание: сетка и просмотр деталей работают нормально, если я не пытаюсь использовать modalpopupextender.

Мой вопрос: может ли кто-нибудь сказать мне, что я делаю неправильно в своем коде, или предложить лучшее решение для реализации 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(); 

} 

}

Я подтвердил через отладку, что это mdlPopup.Show() не выполнять при щелчке на ссылке, и Visual Studio не регистрирует никаких ошибок , Просто ничего не происходит.

Кроме того, Btnshowpopup является только поддельной кнопкой. Всплывающее окно должно показываться, если я вызываю mdlpopup.show(); от codebehind. Даже если установить панель и btnshowpopupp на видимые, а затем нажать кнопку, ничего не происходит.

Любая помощь будет оценена по достоинству. Благодарю.

+0

Вам не нужно использовать Javascript, чтобы открыть окно modelpopup? – rach

+0

Примеры, которые я видел, не имеют javascript. Я просто делаю что-то неправильно. – TimidObserver

+0

Вы пробовали удалить стиль = display: none from btnShowPopup? Это то, что вы говорите в своем последнем абзаце? – jadarnel27

ответ

0

Я решил свою проблему. Я подумал, что я поделился бы этим для всех, у кого есть аналогичная проблема.

Я видел 12 примеров на разных сайтах, которые показывают, что это не проблема, но я взял modalpopupextender за пределами области обновления, и проблема была решена. Поэтому, по крайней мере, для меня, modalpopupextender должен находиться за пределами панели обновления, чтобы она срабатывала.

Смежные вопросы