ASP.. NET AJAX工具箱中的ModalPopupExtender在ListView行为



我希望有人能帮助我在过去的几天里一直在努力解决这个问题。我一直在使用AJAX工具箱ModalPopupExtender外的ListViews非常好,但由于某种原因,我似乎不能包装我的头周围为什么这段代码不工作在一个ListView项目模板。

基本上,我想要实现的是:用户通过ListView呈现一些行数据,其中每行显示一个带有文本"Remove"的LinkButton。我希望用户能够点击这个链接,并弹出一个模态对话框,询问他们是否确定他们想这样做。如果他们单击ok按钮,它应该触发一个事件,执行必要的数据库工作并重新加载页面……如果没有,请取消回发请求并清除对话框。

使用下面的代码,我已经成功地通过ModalPopupExtender的targetid属性钩到链接按钮,因此对话框确实弹出。但是,ok按钮不会触发我编写的事件(我在事件的代码中放置了一个断点,因此不会触及它)。此外,取消按钮也不能像它在listview控件之外那样正常工作。

我一定在这里遗漏了一些相当基本的东西,但我不知道-任何帮助都会非常感激。如果这个方法不可行,我当然愿意采用其他方法。

<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>

我终于可以让它工作了。不过这有点棘手。步骤如下:

  1. 将面板、按钮和modalpopupextender移出listview
  2. 创建HiddenField或其他控件,并将其与ModalPopupExtender控件的TargetControlID关联。
  3. 在ListView的按钮中处理Click事件,并在后面的代码中直接调用ModalPopupExtender.Show()方法,然后瞧。

它确实有点脏,但是ModalPopupExtender似乎在与控件关联时覆盖了listview按钮的单击事件。

似乎是一个问题与ModalPopupExtender上的数据绑定重复行。

愚蠢的想法#1:你可以尝试隐藏lnkRemoveUser,直到行被选中-然后,在SelectionChanged事件,突出显示行,显示按钮,并挂钩按钮到ModalPopupExtender?

愚蠢的想法#2:在ListView外面有一个隐藏的按钮,并将你的ModalPopupExtender连接到它。然后让你的链接按钮调用该按钮的onclick()。

相关内容

  • 没有找到相关文章

最新更新