gridview删除行怎么做?送分帖!
ztwz 2006-05-19 11:03:54 偶在两个页面里都用到了gridview这个控件,一个页能能删除,一个页面总报错,郁闷死我了!
我用的是access作为数据库,表里有两个字段id(自动编号),name(文本)
下面是我出错页的代码。
html代码片段
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=<%#Eval("name") %>></asp:Label>
<asp:LinkButton ID="lbtnDel" runat="server" CommandName ="delete">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
页面.cs代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
bind();
}
}
protected void bind()
{
string connstring = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("~/DB/db.mdb");
string sql = "select * from [log_main]";
OleDbConnection conn = new OleDbConnection(connstring);
OleDbDataAdapter dr = new OleDbDataAdapter(sql,conn );
DataSet ds = new DataSet();
dr.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id= (int) GridView1.DataKeys[e.RowIndex-1].Value;//点页面上的删除按钮这行报错!
//索引超出范围。必须为非负值并小于集合大小。
//参数名: index
}
}
他总说我的索引超出范围,我高断点看过e.RowIndex是正确的索引呀!要怎么在gridview自定义模板中删除行呀!