有关可在线编辑的datagrid,狂急!!!!求各位帮帮忙!!!!!!!

AeroCraft 2003-05-17 12:01:50
为什么不能更新数据,提示“索引超出范围”,代码如下:
-----------------------------------------------------------------------
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)
{

}
}
}
...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EventArgs 2003-05-21
  • 打赏
  • 举报
回复
I guess that the index must be -1,for you not using init the index and not using a recall.
imfine 2003-05-17
  • 打赏
  • 举报
回复
可能没定义DataKeyField
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="id" >
AeroCraft 2003-05-17
  • 打赏
  • 举报
回复
up
AeroCraft 2003-05-17
  • 打赏
  • 举报
回复
up
AeroCraft 2003-05-17
  • 打赏
  • 举报
回复
都不行,顶
Jacob_son 2003-05-17
  • 打赏
  • 举报
回复
加个Datagrid1.CurrentPageIndex=0试试

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧