0

グリッドビューで行を削除しようとするとエラーが返されます (入力文字列が正しい形式ではありませんでした)

私が間違っているのかわかりません。何か助けはありますか?

<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();
    }
4

1 に答える 1

1

位置 0 のセルには「delete」という単語が含まれており、int に変換できません。以下を使用する必要があります。

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);
于 2012-08-20T15:32:25.320 に答える