尝试删除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();
}
答案 0 :(得分: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);