我希望有人能夠幫助我解決這個問題,我一直在努力過去的幾天。我一直在使用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的項目數,因爲當列表視圖中沒有任何項目時,彈出框面板通常會顯示在頁面上。再次感謝! –