【问题标题】:Ajax Modal pop up appears twiceAjax Modal 弹出窗口出现两次
【发布时间】:2015-10-23 00:25:50
【问题描述】:

我在 gridview 中有一个链接按钮,当我单击该链接按钮时,应该会出现一个模式弹出窗口。但是当我点击时,模式弹出窗口出现两次,下面是我的代码。

ASPX:

<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <table>
                <asp:GridView ID="gvAppIssue" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                    ForeColor="#333333" GridLines="Both" OnRowCommand="gvAppIssue_RowCommand"
                    PageSize="100" ShowHeaderWhenEmpty="true" EmptyDataText="No Records Found" EmptyDataRowStyle-Font-Bold="true"
                    EmptyDataRowStyle-HorizontalAlign="Center" CsssClass="contentfont">
                    <Columns> 
                        <asp:TemplateField HeaderText="App ID">
                            <ItemTemplate>
                                <asp:Label ID="lblAppID" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>                            
                        <asp:TemplateField HeaderText="App Name">
                            <ItemTemplate>
                                <asp:Label ID="lblAppName" runat="server" Text='<%# Eval("App") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>                   
                        <asp:TemplateField HeaderText="Issue" ItemStyle-HorizontalAlign="Center">
                            <ItemTemplate>
                                <asp:LinkButton ID="lnkbtnIssue" runat="server" ForeColor="Black" 
                                    Text='<%# Eval("App_Iss") %>' CommandName="checkAppIss" />                                    
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <RowStyle BackColor="White" />
                    <PagerStyle HorizontalAlign="Center" BackColor="#5B95CF" ForeColor="White" />
                    <HeaderStyle BackColor="#5B95CF" Font-Bold="True" ForeColor="White" Width="80%" />
                </asp:GridView>
                <asp:Panel ID="pnlIssue" runat="server" BackColor="Gainsboro" CssClass="contentfont">                        
                <table align="center">
                        <tr>
                            <th valign="middle" colspan="2" align="center" bgcolor="#1E4265" style="font-weight: bold;
                                font-size: medium; font-family: Arial; color:white;">
                                Issue Details
                                <asp:ImageButton ID="btnWarning" runat="server" ImageUrl="Images/Close.PNG" ImageAlign="Right"
                                    Height="20px" Width="20px" />
                            </th>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label runat="server" Text="App ID" Font-Bold="true"></asp:Label>
                            </td>
                            <td>
                                <asp:Label ID="lblAppID" runat="server"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label runat="server" Text="AppName" Font-Bold="true"></asp:Label>
                            </td>
                            <td>
                                <asp:Label ID="lblAppName" runat="server"></asp:Label>
                            </td>
                        </tr>                         
                    </table>
                </asp:Panel>
                <asp:HiddenField ID="hfpop" runat="server"  />
                <cc1:ModalPopupExtender ID="popup" CancelControlID="btnWarning" runat="server" PopupControlID="pnlIssue"
                    TargetControlID="hfpop" >
                </cc1:ModalPopupExtender>
            </table>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

代码隐藏:

protected void gvAppIssue_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {
            if (e.CommandName == "checkAppIss")
            {
                 GridViewRow gvRow = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;
                 string strID = ((Label)gvRow.FindControl("lblAppID")).Text;
                 if(strID == "Yes")
                 {
                    int appID = "1";
                    ShowPopup(appID);
                 }   
             }
         }
     }    

基于 strID 值,我需要检查表中的某些行,然后将值填充到 ShowPopup 方法中的标签中。

public void ShowPopup(int appID)
    {
        DataTable dtGetID = AppData.GetID(appID);
        if (dtGetID.Rows.Count > 0)
        {
            lblAppID.Text = dtGetID.Rows[0]["Id"].ToString();
            lblAppName.Text = dtGetID.Rows[0]["Name"].ToString();               
            popup.Show();
        }
    }

现在我能够在标签中获得正确的值,唯一的问题是弹出窗口出现了两次。一个弹出窗口具有完整的值并且它是完美的,另一个只有第一个 td 值而不是 showpopup 方法中的标签。所以我不得不关闭一个弹出窗口才能看到另一个完美的模式。

谁能建议或帮助我解决这个问题?

【问题讨论】:

    标签: c# asp.net ajax gridview modalpopupextender


    【解决方案1】:

    这可能是由于回发问题。也许尝试将“pnlIssue”、模块弹出扩展器和隐藏字段放在 gridView 更新面板之外和他们自己的更新面板中,在面板的更新面板上设置 UpdateMode="Conditional" 并在显示弹出窗口中调用 updatepanelName.Update。

    例如

    <asp:UpdatePanel ID="upPopup" ChildrenAsTriggers="false" RenderMode="Inline" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:Panel ID="pnlIssue" runat="server" BackColor="Gainsboro" CssClass="contentfont">                        
                <table align="center">
                        <tr>
                            <th valign="middle" colspan="2" align="center" bgcolor="#1E4265" style="font-weight: bold;
                                font-size: medium; font-family: Arial; color:white;">
                                Issue Details
                                <asp:ImageButton ID="btnWarning" runat="server" ImageUrl="Images/Close.PNG" ImageAlign="Right"
                                    Height="20px" Width="20px" />
                            </th>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label runat="server" Text="App ID" Font-Bold="true"></asp:Label>
                            </td>
                            <td>
                                <asp:Label ID="lblAppID" runat="server"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Label runat="server" Text="AppName" Font-Bold="true"></asp:Label>
                            </td>
                            <td>
                                <asp:Label ID="lblAppName" runat="server"></asp:Label>
                            </td>
                        </tr>                         
                    </table>
                </asp:Panel>
                <asp:HiddenField ID="hfpop" runat="server"  />
                <cc1:ModalPopupExtender ID="popup" CancelControlID="btnWarning" runat="server" PopupControlID="pnlIssue"
                    TargetControlID="hfpop" >
                </cc1:ModalPopupExtender>
    </ContentPanel>
    </UpdatePanel>
    

    以及后面的代码:

    public void ShowPopup(int appID)
    {
        DataTable dtGetID = AppData.GetID(appID);
        if (dtGetID.Rows.Count > 0)
        {
            lblAppID.Text = dtGetID.Rows[0]["Id"].ToString();
            lblAppName.Text = dtGetID.Rows[0]["Name"].ToString();               
            popup.Show();
            upPopup.Update();
        }
    }
    

    【讨论】:

    • @HeinrichJNel - 我有一个类似的问题,有什么办法可以帮我解决这个问题。stackoverflow.com/questions/32398185/…
    • @Michael - 不幸的是,您的问题被搁置,所以我无法回复。 atanu-roy 提供的答案是准确的。也许您可以建立一个满意的值列表并通过列表传递给弹出方法,然后遍历在(单个)弹出窗口中显示它们中的每一个的项目?模块弹出窗口不能像消息框或 javascript 警报那样连续显示多次。它本质上类似于说popup.visible = true。只有最后一个会真正呈现客户端。
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多