0

尝试删除 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();
    }
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 回答