我希望有人能够帮助我解决这个问题,我一直在努力过去的几天。我一直在使用ListViews之外的AJAX工具包ModalPopupExtender,但是由于某种原因,我似乎无法包装我的头,因为这些代码并不适用于ListView项目模板。ASP.NET AJAX工具包ModalPopupExtender里面的ListView行为
基本上,我试图达到的是:用户通过ListView呈现一些数据行,其中每行显示带有文本“Remove”的LinkButton。我希望用户能够点击这个链接,弹出一个模式对话框,询问他们是否确定要这样做。如果他们点击okay按钮,它应该触发一个事件并完成必要的数据库工作并重新加载页面......如果没有,取消回发请求并清除对话框。
使用下面的代码,我已经成功地通过ModalPopupExtender的targetid属性连接到链接按钮,因此对话框确实弹出了。然而,好的按钮不会触发我写的事件(我在事件中的代码隐藏中放置了一个断点,并且它没有被触及)。此外,取消按钮不起作用,因为它通常会在列表视图控件之外。
我必须在这里错过一些相当重要的东西,但我很茫然 - 任何帮助都将不胜感激。如果这种方法不可行,我肯定会接受替代方法。
<ItemTemplate>
<tr>
<td align="center">
<asp:Label runat="server" ID="lblUserID" Text='<%# Eval("USERID") %>' Visible="false" />
<asp:LinkButton runat="server" ID="lnkRemoveUser" Text="Remove" />
<asp:Panel ID="removeUserModalPanel" runat="server">
<div class="popup">
<div class="loginTitleBar" id="Div1">
Remove User
</div>
<div class="popupBody">
<p>
Are you sure you want to remove this user?
</p>
</div>
<div class="popupControls">
<asp:Button id="btnRemoveUserOkay" runat="server" type="button" Text="Remove User"
onclick="btnRemoveUserOkay_Click" />
<input id="btnRemoveUserCancel" type="button" value="Cancel" />
</div>
</div>
</asp:Panel>
<asp:ModalPopupExtender
ID="removeUserModalPopupExtender"
runat="server"
BackgroundCssClass="ModalPopupBG"
CancelControlID="btnRemoveUserCancel"
TargetControlID="lnkRemoveUser"
PopupControlID="removeUserModalPanel"
drag="false" >
</asp:ModalPopupExtender>
</td>
<td>
<asp:LinkButton ID="lnkUserName" runat="server" Text='<%# Eval("USERNAME") %>' />
</td>
<td>
<asp:Label ID="lblFirstName" runat="server" Text='<%# Eval("FIRSTNAME") %>' />
</td>
<td>
<asp:Label ID="lblLastName" runat="server" Text='<%# Eval("LASTNAME") %>' />
</td>
<td>
<asp:Label ID="lblEmailAddress" runat="server" Text='<%# Eval("EMAILADDRESS") %>' />
</td>
</tr>
</ItemTemplate>
谢谢!其实,“愚蠢的想法#2”让我想到了同一条轨道。最终工作的是保持ItemTemplate中的ModalPopupExtender代码,但将PopupPanel移动到列表视图之外允许模式框的两个按钮正常工作。唯一出现这个问题的是必须在列表被绑定后检查listview的项目数,因为当列表视图中没有任何项目时,弹出框面板通常会显示在页面上。再次感谢! –