2015-12-11 4 views
0

На моей GridView я ассоциируем яваскриптом метод OnClick к linkbuton, который просит, чтобы подтвердить удаление ограниченного ряда:OnClick asp.net событие не произошло после того, как яваскрипт подтверждения в GridView

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 срабатывает только время от времени, и у меня до сих пор нет предположения.

ответ

0

попробовать это:

<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 :) 
} 
} 
+0

Хорошо, я сделал шаг вперед. Оба метода (ваш и мой) на самом деле работают. Только первая строка удаляется, когда у меня больше одного. Я этого раньше не понимал, потому что я тестировал только один элемент в сетке. – user3713398