单击删除按钮时,总是报错。
前台代码为
<%@ Page Title="" Language="C#" MasterPageFile="~/Admin/admin.master" AutoEventWireup="true" CodeFile="ListOfBooks.aspx.cs" Inherits="Admin_ListOfBooks" %><%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="cc1" %><asp:Content ID="Content1" ContentPlaceHolderID="cphAdmin" Runat="Server"> <div style="font-size:small">
<asp:GridView runat="server" ID="gvBooks" AutoGenerateColumns="False"
BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px"
CellPadding="4" ForeColor="Black" GridLines="Vertical" Width="98%"
OnRowDataBound="gvBooks_RowDataBound" onrowdeleting="gvBooks_RowDeleting">
<Columns>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="书名" />
<asp:BoundField DataField="Author" HeaderText="作者" />
<asp:TemplateField HeaderText="类别">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Category.Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="id"
DataNavigateUrlFormatString="BookDetail.aspx?id={0}" Text="详细" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<FooterStyle BackColor="#CCCC99" />
<RowStyle BackColor="#F7F7DE" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<cc1:AspNetPager ID="AspNetPager1" runat="server"
onpagechanged="AspNetPager1_PageChanged">
</cc1:AspNetPager>
</div>
</asp:Content>后台代码为
public partial class Admin_ListOfBooks : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
this.AspNetPager1.DataBind();
BindGrid(0);
AspNetPager1.CurrentPageIndex = 1;
}
} private void BindGrid(int index)
{
int indexs=10*(index);
this.AspNetPager1.RecordCount = BookManager.GetAllBooks().Rows.Count;
gvBooks.DataSource = BookManager.GetAllBooks(indexs);
this.gvBooks.DataBind();
}
protected void gvBooks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
e.Row.Cells[5].Attributes.Add("onclick", "return confirm('确认删除吗?')");
}
}
protected void AspNetPager1_PageChanged(object src, Wuqi.Webdiyer.PageChangedEventArgs e)
{
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
AspNetPager1.DataBind();
BindGrid(AspNetPager1.CurrentPageIndex - 1);
}
protected void gvBooks_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int Id = int.Parse(gvBooks.DataKeys[e.RowIndex].Value.ToString());//就是这个地方报错
BookManager.DeleteBookById(Id);
}
}
前台代码为
<%@ Page Title="" Language="C#" MasterPageFile="~/Admin/admin.master" AutoEventWireup="true" CodeFile="ListOfBooks.aspx.cs" Inherits="Admin_ListOfBooks" %><%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="cc1" %><asp:Content ID="Content1" ContentPlaceHolderID="cphAdmin" Runat="Server"> <div style="font-size:small">
<asp:GridView runat="server" ID="gvBooks" AutoGenerateColumns="False"
BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px"
CellPadding="4" ForeColor="Black" GridLines="Vertical" Width="98%"
OnRowDataBound="gvBooks_RowDataBound" onrowdeleting="gvBooks_RowDeleting">
<Columns>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="书名" />
<asp:BoundField DataField="Author" HeaderText="作者" />
<asp:TemplateField HeaderText="类别">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Category.Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="id"
DataNavigateUrlFormatString="BookDetail.aspx?id={0}" Text="详细" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<FooterStyle BackColor="#CCCC99" />
<RowStyle BackColor="#F7F7DE" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<cc1:AspNetPager ID="AspNetPager1" runat="server"
onpagechanged="AspNetPager1_PageChanged">
</cc1:AspNetPager>
</div>
</asp:Content>后台代码为
public partial class Admin_ListOfBooks : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
this.AspNetPager1.DataBind();
BindGrid(0);
AspNetPager1.CurrentPageIndex = 1;
}
} private void BindGrid(int index)
{
int indexs=10*(index);
this.AspNetPager1.RecordCount = BookManager.GetAllBooks().Rows.Count;
gvBooks.DataSource = BookManager.GetAllBooks(indexs);
this.gvBooks.DataBind();
}
protected void gvBooks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
e.Row.Cells[5].Attributes.Add("onclick", "return confirm('确认删除吗?')");
}
}
protected void AspNetPager1_PageChanged(object src, Wuqi.Webdiyer.PageChangedEventArgs e)
{
AspNetPager1.CurrentPageIndex = e.NewPageIndex;
AspNetPager1.DataBind();
BindGrid(AspNetPager1.CurrentPageIndex - 1);
}
protected void gvBooks_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int Id = int.Parse(gvBooks.DataKeys[e.RowIndex].Value.ToString());//就是这个地方报错
BookManager.DeleteBookById(Id);
}
}
解决方案 »
- 如果限制Calendar中的最大份月和最小月份。
- gridview如何禁用删除和更新,如何让某列成不可编辑状态
- IsolationLevel.ReadCommitted
- Visual Studio 2005 的选项卡设置问题
- 帮忙看看下面这个函数?该怎么改
- datagrid绑定数据,怎么把某一列相同的内容放在一个合并后的大单元格中?其他的不变
- 有什么好的方法解决:永远记住用户最近浏览的商品记录
- html双引号问题
- 网站突然出这么长的路径,不知道是哪里设置了
- Visual Studio.Net推荐的正则表达式有些小毛病!!!!!!!
- 动态商业网站用三层结构布局就可以了吗
- MVC中的M和三层架构中的Bll层区别????
如:gvBooks.DataKeyNames=new string[]{"id"};
</asp:GridView>
BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px"
CellPadding="4" ForeColor="Black" GridLines="Vertical" Width="98%"
OnRowDataBound="gvBooks_RowDataBound" onrowdeleting="gvBooks_RowDeleting">
你的GridView里面没有设置DataKeyNames属性值,在以下可以看出,你要用DataKeyNames的是ID。protected void gvBooks_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int Id = int.Parse(gvBooks.DataKeys[e.RowIndex].Value.ToString());//就是这个地方报错
BookManager.DeleteBookById(Id);
}