这是关于datagrid更新的问题,小弟试了很多次,依然找不到问题所在,下面提供调试的两种情况(主要针对sql语句进行修改观察):
1.把where id=@id去掉,然后调试,现象反映:所有记录变成和更新的那行的记录一样(正常),但是如果原来就不存在数据的,就无法插入新数据;而且进行再次更新时无法再更新。
2。不去掉where id=@id,这时的现象是:不能更新,无论输入什么数据都不能更新。
本人的观点:是不是datagrid的属性设置问题?主要就设置了allowpaging=true,allowcustompaging=true(曾是过allowcustompaging=false),也一样
private void Datag_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string sql=" update tongxunlu set name=@name,sex=@sex,addr=@addr,tel=@tel,email=@email,qq=@qq,company=@company,job=@job where id=@id ";
com=new SqlCommand(sql,cn);
com.Parameters.Add("@id",SqlDbType.Int);
com.Parameters["@id"].Value=Datag.DataKeys[(int)e.Item.ItemIndex];
com.Parameters.Add("@name",SqlDbType.VarChar,50,"name");
string colvalue=((TextBox)e.Item.Cells[1].Controls[0]).Text;
com.Parameters["@name"].Value=colvalue;
com.Parameters.Add("@sex",SqlDbType.VarChar,50,"sex");
colvalue=((TextBox)e.Item.Cells[2].Controls[0]).Text;
com.Parameters["@sex"].Value=colvalue;
com.Parameters.Add("@addr",SqlDbType.VarChar,50,"addr");
colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text;
com.Parameters["@addr"].Value=colvalue;
com.Parameters.Add("@tel",SqlDbType.VarChar,50,"tel");
colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text;
com.Parameters["@tel"].Value=colvalue;
com.Parameters.Add("@email",SqlDbType.VarChar,50,"email");
colvalue=((TextBox)e.Item.Cells[5].Controls[0]).Text;
com.Parameters["@email"].Value=colvalue;
com.Parameters.Add("@qq",SqlDbType.VarChar,50,"qq");
colvalue=((TextBox)e.Item.Cells[6].Controls[0]).Text;
com.Parameters["@qq"].Value=colvalue;
com.Parameters.Add("@company",SqlDbType.VarChar,50,"compamy");
colvalue=((TextBox)e.Item.Cells[7].Controls[0]).Text;
Label2.Text=((TextBox)e.Item.Cells[7].Controls[0]).Text;
com.Parameters["@company"].Value=colvalue;
com.Parameters.Add("@job",SqlDbType.VarChar,50,"job");
colvalue=((TextBox)e.Item.Cells[8].Controls[0]).Text;
com.Parameters["@job"].Value=colvalue;
try
{
cn.Open();
com.ExecuteNonQuery();
cn.Close();}
catch
{Label2.Text="更新失败!";}
Datag.EditItemIndex=-1;
//Datag.DataBind();
BindGrid();
}
private void BindGrid()
{
cn=new SqlConnection("data source=xyizheng;initial catalog=procedure_test;user id=sa;");
string sql="select * from tongxunlu";
cn.Open();
SqlDataAdapter da=new SqlDataAdapter(sql,cn);
//SqlDataReader da=com.ExecuteReader();
DataSet ds=new DataSet();
da.Fill(ds);
Datag.DataSource=ds;
Datag.DataBind();
cn.Close();
}
请各位前辈指点!谢谢您了!