求救(那里出问题了)
我编一段更新代码,为何执行完后,数据库不能更新,
DataGrid1的可以更新,但是DataGrid2的更新不了,也不提示错误?代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
cn=new SqlConnection(ConfigurationSettings.AppSettings[ "connStr "]);
if(!IsPostBack)
BindGrid1();
BindGrid2();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_cancel);
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_edit);
this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_update);
this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_delete);
this.DataGrid1.Load += new System.EventHandler(this.Page_Load);
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.DataGrid2.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid2.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid2_cancel);
this.DataGrid2.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid2_edit);
this.DataGrid2.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid2_update);
this.DataGrid2.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid2_delete);
this.DataGrid2.Load += new System.EventHandler(this.Page_Load);
this.DataGrid2.SelectedIndexChanged += new System.EventHandler(this.DataGrid2_SelectedIndexChanged);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
DataGrid2.CurrentPageIndex=e.NewPageIndex;
BindGrid1();
BindGrid2();
}
public void BindGrid1()
{ SqlDataAdapter da = new SqlDataAdapter( "select * from Department ",cn);
DataSet ds=new DataSet();
da.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
}
public void BindGrid2()
{
SqlDataAdapter da =new SqlDataAdapter( "select * from people ",cn);
DataSet ds = new DataSet();
da.Fill(ds);
DataGrid2.DataSource=ds;
DataGrid2.DataBind();
}
public void DataGrid1_edit(object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid1();
}
public void DataGrid2_edit(object sender,DataGridCommandEventArgs e)
{DataGrid2.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid2();
}
public void DataGrid1_cancel(object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
BindGrid1();
}
public void DataGrid2_cancel (object sender,DataGridCommandEventArgs e)
{
DataGrid2.EditItemIndex=-1;
BindGrid2();
}
public void DataGrid1_update(object sender ,DataGridCommandEventArgs e)
{
SqlCommand cm=new SqlCommand( "updateDepartment ",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter( "@Department_id ",SqlDbType.NVarChar,50));
cm.Parameters.Add(new SqlParameter( "@Department_name ",SqlDbType.NVarChar,50));
cm.Parameters[ "@Department_name "].Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
cm.Parameters[ "@Department_id "].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
cm.Connection.Open();
cm.ExecuteNonQuery();
DataGrid1.EditItemIndex=-1;
cm.Connection.Close();
BindGrid1();
}
public void DataGrid2_update(object sender,DataGridCommandEventArgs e)
{
SqlCommand cd=new SqlCommand( "updatepeople ",cn);
cd.CommandType=CommandType.StoredProcedure;
cd.Parameters.Add(new SqlParameter( "@People_id ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@People_name ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Sex ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Post ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Department_id ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Department_name ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Homeaddress ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Officephone ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@Homephone ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@ID_card ",SqlDbType.NVarChar,50));
cd.Parameters.Add(new SqlParameter( "@beizhu ",SqlDbType.NVarChar,50));
cd.Parameters[ "@People_name "].Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
cd.Parameters[ "@Sex "].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
cd.Parameters[ "@Post "].Value=((TextBox)e.Item.Cells[3].Controls[0]).Text;
cd.Parameters[ "@Department_id "].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text;
cd.Parameters[ "@Department_name "].Value=((TextBox)e.Item.Cells[5].Controls[0]).Text;
cd.Parameters[ "@Homeaddress "].Value=((TextBox)e.Item.Cells[6].Controls[0]).Text;
cd.Parameters[ "@Officephone "].Value=((TextBox)e.Item.Cells[7].Controls[0]).Text;
cd.Parameters[ "@Homephone "].Value=((TextBox)e.Item.Cells[8].Controls[0]).Text;
cd.Parameters[ "@ID_card "].Value=((TextBox)e.Item.Cells[9].Controls[0]).Text;
cd.Parameters[ "@beizhu "].Value=((TextBox)e.Item.Cells[10].Controls[0]).Text;
cd.Parameters[ "@People_id "].Value=DataGrid2.DataKeys[(int)e.Item.ItemIndex];
cd.Connection.Open();
cd.ExecuteNonQuery();
DataGrid2.EditItemIndex=-1;
cd.Connection.Close();
BindGrid2();
}
public void DataGrid1_delete(object sender,DataGridCommandEventArgs e)
{
string strsql= "delete from Department where Department_id=@Department_id ";
SqlCommand cm=new SqlCommand(strsql,cn);
cm.Parameters.Add(new SqlParameter( "@Department_id ",SqlDbType.NVarChar,50));
cm.Parameters[ "@Department_id "].Value=DataGrid1.DataKeys[(int)e.Item.ItemIndex];
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
}
catch(SqlException)
{}
cm.Connection.Close();
BindGrid1();
}
public void DataGrid2_delete(object sender,DataGridCommandEventArgs e)
{
string strsql= "delete from people where People_id=@People_id ";
SqlCommand cm=new SqlCommand(strsql,cn);
cm.Parameters.Add(new SqlParameter( "@People_id ",SqlDbType.NVarChar,50));
cm.Parameters[ "@People_id "].Value=DataGrid2.DataKeys[(int)e.Item.ItemIndex];
cm.Connection.Open();
cm.ExecuteNonQuery();
cm.Connection.Close();
BindGrid2();
}
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void Button3_Click(object sender, System.EventArgs e)
{
Response.Redirect( "AddDepartment.aspx ");
}
private void DataGrid2_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
}
}
[解决办法]
改成这样试试
===================
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
cn=new SqlConnection(ConfigurationSettings.AppSettings[ "connStr "]);
if(!IsPostBack)
{
BindGrid1();
BindGrid2();
}
}