簡體   English   中英

在gridview中的javascript確認后未觸發onclick asp.net事件

[英]Onclick asp.net event not triggered after javascript confirmation in gridview

在我的gridview上,我將一個javascript OnClick方法與一個linkbuton關聯,該請求要求確認邊界行的刪除:

protected void DeleteRow_Click(object sender, EventArgs e)
    {
        GridViewRow grdrow = (GridViewRow)((LinkButton)sender).NamingContainer;
        using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
        {
            string cartId = usersShoppingCart.GetCartId();

            int rowIndex = grdrow.RowIndex;

            //int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;
            string itemId = ((HiddenField)CartList.Rows[rowIndex].FindControl("hiddenEncryptedItemID")).Value;
            usersShoppingCart.RemoveItemWithOptionsAndValues(cartId, itemId);
            CartList.DataBind();
            lblTotal.Text = String.Format("{0:N2}", usersShoppingCart.GetTotal());
            //return usersShoppingCart.GetCartItems();
        }
    }

出於裝飾性原因,我通過以下方式構建了ItemTemplate:

<ItemTemplate>
   <div class="divItemTotal">
       <div>
           <asp:Label runat="server" CssClass="totalItem" ID="lblItemTotalPrice" Text='<%#: String.Format("{0:N2}", ((Convert.ToDouble(Item.Quantity)) *  Convert.ToDouble(Item.UnitPrice)))%>'></asp:Label>
            <asp:Label runat="server" ID="lblCurrency2" Text=" €"></asp:Label></div>
            <asp:LinkButton OnClick="DeleteRow_Click" CssClass="removeItem imgRemoveItem" runat="server" ID="DeleteRow"></asp:LinkButton>
       </div>

在理想情況下,javascript方法應阻止頁面執行回發,並在確認后放手。 不幸的是,當單擊“確定”時,什么也沒有發生,並且ASP.net方法從未觸發。 如果沒有javascript函數,更奇怪的是asp方法只會不時觸發,我對此仍然沒有任何假設。

試試這個

<ItemTemplate>
  <div class="divItemTotal">
   <div>
      <asp:Label runat="server" CssClass="totalItem" ID="lblItemTotalPrice" Text='<%#: String.Format("{0:N2}", ((Convert.ToDouble(Item.Quantity)) *  Convert.ToDouble(Item.UnitPrice)))%>'></asp:Label>
      <asp:Label runat="server" ID="lblCurrency2" Text=" €"></asp:Label></div>
      <asp:LinkButton CommandArgument='<%# Eval("Item.Id") %>' CommandName="Delete" CssClass="removeItem imgRemoveItem" runat="server" ID="DeleteRow"></asp:LinkButton>
   </div> 

背后的代碼:

protected void CartList_RowDataBound(object sender, GridViewRowEventArgs e)
{ 
LinkButton l = (LinkButton)e.Row.FindControl("DeleteRow"); 
l.Attributes.Add("onclick", "javascript:return " +
"confirm('Are you sure you want to delete this record " +
DataBinder.Eval(e.Row.DataItem, "Item.Id") + "')");
}



protected void GridView1_RowCommand(object sender, 
                     GridViewCommandEventArgs e)
{
 if (e.CommandName == "Delete")
 {
   // get the categoryID of the clicked row
  int categoryID = Convert.ToInt32(e.CommandArgument);
  // Delete the record 
  DeleteRecordByID(categoryID);
// Implement this on your own :) 
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM