удалить строку gridview программно

Я продолжаю возвращать ошибку при попытке удалить строку в моем представлении сетки (входная строка была в неправильном формате)

Не уверен, что я делаю неправильно. Любая помощь?

<asp:GridView ID="favoritesGrid" runat="server" OnRowDeleting ="favoritesGrid_RowDeleting">
    <columns>
        <asp:CommandField HeaderText="Delete" ShowDeleteButton="True"/>
        <asp:BoundField HeaderText="FavoritesId" DataField="FavoritesId"/>
        <asp:TemplateField HeaderText="Site Name">
             <ItemTemplate>
                 <asp:HyperLink ID="myHyperlink"
                                Text='<%# Eval("SiteName") %>'
                                NavigateUrl='<%# Eval("Url") %>'
                                runat="server">

                 </asp:HyperLink>
             </ItemTemplate>
        </asp:TemplateField>

    </columns>
</asp:GridView>



   protected void favoritesGrid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        var delId = Convert.ToInt32(favoritesGrid.Rows[e.RowIndex].Cells[0].Text);
        //var id = favoritesGrid.Rows[e.RowIndex].Cells[0].Text;
        var delFavorites = new FavoritesDb();
        var delFavs = delFavorites.DeleteFavorite(delId);
        DataBind();
    }

person haydnD    schedule 20.08.2012    source источник
comment
Не могли бы вы показать исключение, которое вы получаете, и указать, где оно выбрасывается?   -  person Kirill Bestemyanov    schedule 20.08.2012
comment
Входная строка имела неправильный формат. в var delId = Convert.ToInt32(favoritesGrid.Rows[e.RowIndex].Cells[0].Text);   -  person haydnD    schedule 20.08.2012


Ответы (1)


Ячейка в позиции 0 содержит слово «удалить», и ее нельзя преобразовать в целое число. Вам нужно использовать:

var delId = Convert.ToInt32(favoritesGrid.Rows[e.RowIndex].Cells[1].Text);

Однако это не лучший подход, поскольку вы можете изменить порядок ячеек или добавить новый. Вам лучше использовать атрибут DataKeyNames.

aspx:

<asp:GridView DataKeyNames="FavoritesId" ...>

C#:

Convert.ToInt32(favoritesGrid.DataKeys[e.RowIndex].Value);
person Amiram Korach    schedule 20.08.2012