使用了模版列,想通过textbox来实现编辑功能,但总是不能更新,提示出现字符串格式不正确,不知道是什么原因?求各位高人指点!代码如下,提示错误出在注释栏“出错”上:
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlConnection con=new SqlConnection("Server=localhost;uid=sa;pwd=123;database=mydata");
SqlCommand selectCmd=con.CreateCommand();selectCmd.CommandType=CommandType.Text;

selectCmd.CommandText="select name_fixed '项目',price_fixed '单价',amount_fixed '数量',subtotal '小计',id 'ID' from data where year_bd=2007 and (mq_bd='10月' or mq_bd='11月' or mq_bd='12月') and name_dept='"+Label1.Text+"'";SqlDataAdapter sqlAdatper=new SqlDataAdapter();
sqlAdatper.SelectCommand=selectCmd;DataSet ds=new DataSet();
con.Open();sqlAdatper.Fill(ds,"fixed");
con.Close();SqlCommand updateCmd=con.CreateCommand();
updateCmd.CommandText="update fixed set mq_bd=@mqbd,name_fixed=@namebd,price_fixed=@pricebd,amount_fixed=@amountbd,subtotal=@subtotalbd where id=@idbd";SqlParameter PubNamePar=new SqlParameter("@mqbd",SqlDbType.VarChar,10,"mq_bd");
updateCmd.Parameters.Add(PubNamePar);SqlParameter CityPar=new SqlParameter("@namebd",SqlDbType.VarChar,20,"name_fixed");
updateCmd.Parameters.Add(CityPar);SqlParameter StatePar=new SqlParameter("@pricebd",SqlDbType.Float,8,"price_fixed");
updateCmd.Parameters.Add(StatePar);SqlParameter CountryPar=new SqlParameter("@amountbd",SqlDbType.Float,8,"amount_fixed");
updateCmd.Parameters.Add(CountryPar);
SqlParameter PubIDPar=new SqlParameter("@idbd",SqlDbType.Char,4,"id");
PubIDPar.SourceVersion=DataRowVersion.Original;
updateCmd.Parameters.Add(PubIDPar);
sqlAdatper.UpdateCommand=updateCmd;
DataTable table=ds.Tables["fixed"];
table.PrimaryKey=new DataColumn[]
{
table.Columns["id"]
};
DataRow row=table.Rows.Find(((TextBox)(e.Item.Cells[2].Controls[0])).Text);//出错
row["name_fixed"]=((TextBox)(e.Item.Cells[3].Controls[0])).Text;
row["price_fixed"]=((TextBox)(e.Item.Cells[4].Controls[0])).Text;
row["amount_fixed"]=((TextBox)(e.Item.Cells[5].Controls[0])).Text;
row["id"]=((TextBox)(e.Item.Cells[7].Controls[0])).Text;

con.Open();
sqlAdatper.Update(table);
con.Close();
this.DataGrid1.EditItemIndex=-1;
this.BindGrid();
}