【问题标题】:Ajax ModalPopupExtender is not firingAjax ModalPopupExtender 没有触发
【发布时间】:2013-12-20 19:50:34
【问题描述】:

我在让弹出窗口出现时遇到问题。一旦我可以完全显示弹出窗口,我就可以从那里进行故障排除。基本上,我有一个gridview,当我选择一个链接时,我希望一个详细信息视图出现在弹出窗口中。这一切都是使用对象数据源完成的。

注意:如果我不尝试使用 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>

总结一下,当点击链接按钮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(); 仍应显示弹出窗口;从代码隐藏。即使将面板和 btnshowpopupp 设置为可见然后单击按钮,仍然没有任何反应。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 不是必须用Javascript来打开modelpopup窗口吗?
  • 我见过的例子没有javascript。我只是做错了。
  • 您是否尝试过从 btnShowPopup 中删除 style=display:none?这就是你在最后一段中所说的吗?
  • 是的,我尝试使用该按钮,但没有任何反应。这让我相信我使用带有 modelpopupextender 的更新面板的方式有问题。

标签: c# asp.net gridview asp.net-ajax modalpopupextender


【解决方案1】:

我已经解决了我的问题。我想我会分享给任何有类似问题的人。

我在各种网站上看到了 12 个示例,表明这不是问题,但我将 modalpopupextender 放在更新面板之外,问题就解决了。所以至少对我来说,modalpopupextender 必须在更新面板之外才能触发。

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2016-11-04
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多