有关可在线编辑的datagrid,狂急!!!!求各位帮帮忙!!!!!!!
为什么不能更新数据,提示“索引超出范围”,代码如下:
-----------------------------------------------------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
namespace RCenterServiceAdmin
{
/// <summary>
/// Admin 的摘要说明。
/// </summary>
public class Admin : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Label Label1;
public string connStr="Provider=sqloledb;Data Source=(local);Initial Catalog=RSourceServiceAdmin;User Id=sa;Password=;";
public void Data_Bind()
{
OleDbConnection cn=new OleDbConnection(connStr);
string sql="select * from NodeList";
DataSet ds=new DataSet();
OleDbDataAdapter da=new OleDbDataAdapter(sql,cn);
da.Fill(ds,"NodeList");
DataGrid1.DataSource=ds.Tables["NodeList"].DefaultView;
DataGrid1.DataBind();
}
public void grid_edit(Object sender, DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
Data_Bind();
}
public void grid_cancel(Object sender, DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
Data_Bind();
}
public void grid_update(Object sender, DataGridCommandEventArgs e)
{
string strUpdate= "UPDATE Person SET nodename=@nodename,nodeIP=@nodeIP,IsActive=@IsActive WHERE ID=@ID";
OleDbConnection cn=new OleDbConnection(connStr);
OleDbCommand com=new OleDbCommand(strUpdate, cn);
com.Parameters.Add("@nodename",OleDbType.VarChar,200);
com.Parameters.Add("@nodeIP",OleDbType.VarChar,15);
com.Parameters.Add("@IsActive",OleDbType.VarChar,50);
com.Parameters.Add("@ID",OleDbType.Integer,4);
com.Parameters["@Id"].Value =DataGrid1.DataKeys[(int)e.Item.ItemIndex];
cn.Open();
com.ExecuteNonQuery();
DataGrid1.EditItemIndex = -1;
Data_Bind();
cn.Close();
}
public void grid_delete(Object sender, DataGridCommandEventArgs e)
{
}
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
Data_Bind();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void RB_List_CheckedChanged(object sender, System.EventArgs e)
{
}
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
}
}