C# Ajax模式弹出窗口出现两次
我在gridview中有一个linkbutton,当我点击该linkbutton时,会出现一个模态弹出窗口。但当我点击时,模式弹出窗口出现两次,下面是我的代码 ASPX:C# Ajax模式弹出窗口出现两次,c#,asp.net,ajax,gridview,modalpopupextender,C#,Asp.net,Ajax,Gridview,Modalpopupextender,我在gridview中有一个linkbutton,当我点击该linkbutton时,会出现一个模态弹出窗口。但当我点击时,模式弹出窗口出现两次,下面是我的代码 ASPX: <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"
<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方法中的标签。所以我必须关闭一个弹出窗口,才能看到另一个完美的模态
有人能建议或帮助我解决这个问题吗?这可能是因为回发问题。也许可以尝试将“pnlIssue”、modul popup extender和hidden字段放置在gridView更新面板之外以及它们自己的更新面板中,在面板的更新面板上设置UpdateMode=“Conditional”,并在show popup中调用updatepanelName.update 例如
@HeinrichJNel-我有一个类似的问题,你有没有办法帮我解决这个问题@迈克尔-不幸的是,你的问题被搁置,所以我无法回答。阿塔努·罗伊提供的答案是准确的。也许您可以建立一个得到满足的值列表,并将该列表传递给popup方法,然后在(单个)popup中迭代显示每个值的项?模块弹出窗口不能像消息框或javascript警报那样连续显示多次。它本质上类似于说popup.visible=true。只有最后一个将实际渲染客户端。
<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();
}
}