Я пытаюсь открыть модальное всплывающее окно, когда пользователь нажимает кнопку удаления изображения. когда я нажимаю кнопку «Удалить изображение», я хочу, чтобы пользователь перешел к grdShoppingCart_RowDeleting
при нажатии «ОК». Я не уверен, что я делаю неправильно. Ниже приведен мой код сетки:
<asp:UpdatePanel ID = "updPnl" runat = "server" UpdateMode = "Always">
<ContentTemplate>
<asp:GridView ID = "grdShoppingCart" runat = "server" AutoGenerateColumns = "false" class = "ui-responsive table-stroke ss-table ui-search-result-table" DataKeyNames = "CartID" AllowPaging = "false" PageSize = "5" GridLines = "None" OnRowDataBound = "grdShoppingCart_RowDataBound" OnRowDeleting = "grdShoppingCart_RowDeleting" >
<Columns>
<!-- other clumns here-->
<asp:TemplateField ShowHeader = "False" HeaderStyle-HorizontalAlign = "center" ItemStyle-HorizontalAlign = "center" ItemStyle-Width = "150px" ControlStyle-CssClass = "ss-row" >
<ItemTemplate>
<asp:ImageButton ID = "imgbtnDelete" runat = "server" ImageUrl = "~/Images/delete1.png" ToolTip = "Click To Delete" AlternateText = "Click To delete" CommandName = "Delete"/>
<asp:Panel ID = "pnlPopUp" runat = "server" Style = "display: none" CssClass = "modalPopup">
<asp:Panel ID = "pnlDragPopUp" runat = "server" Style = "cursor: move;background-color:#DDDDDD;border:solid 1px Gray;color:Black">
<div>
<p>Are you sure you want to delete this item?</p>
</div>
</asp:Panel>
<div>
<p style = "text-align: center;">
<asp:Button ID = "OkButton" runat = "server" Text = "Yes" />
<asp:Button ID = "CancelButton" runat = "server" Text = "Cancel" />
</p>
</div>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID = "ModalPopupExtender" runat = "server"
TargetControlID = "imgbtnDelete"
PopupControlID = "pnlPopUp"
BackgroundCssClass = "modalBackground"
CancelControlID = "CancelButton"
DropShadow = "true"
PopupDragHandleControlID = "pnlDragPopUp" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
Код позади:
protected void grdShoppingCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int cartId = (int)grdShoppingCart.DataKeys[e.RowIndex]["CartID"];
ShoppingCartData scd = new ShoppingCartData();
scd.DeleteShoppingCartData(cartId);
}
Это изменения, которые я сделал, чтобы исправить код. Я передал CartID коду позади
<div >
<p style = "display:flex;align-items:center;justify-content:space-between;width:220px;">
<asp:Button ID = "OkButton" runat = "server" Text = "Remove" CommandName = "delete" CommandArgument='<%#Eval("CartID") %>'/>
<asp:Button ID = "CancelButton" runat = "server" Text = "Cancel" />
</p>
</div>
и это изменения, которые я сделал в коде:
protected void grdShoppingCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// Get current grid view row
GridViewRow row = grdShoppingCart.Rows[e.RowIndex];
// Get command argument from button, also you could use another approach to get parameters
Button btn = (Button)row.FindControl("OkButton");
int cartId = Convert.ToInt32(btn.CommandArgument);
label1.Text = "The row is going to be deleted: " + cartId;
}
это помогло.