我编一段更新代码,为何执行完后,数据库不能更新,
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)
{

}
}
}

解决方案 »

  1.   

    改成这样试试
    ===================
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    cn=new SqlConnection(ConfigurationSettings.AppSettings["connStr"]);
    if(!IsPostBack) 
    {
                                BindGrid1();
    BindGrid2();
                                } }