小弟今天做了个修改功能,前台是这样子的.选中一行数据.点击修改,便可弹出修改的这条数据的主表信息及明细信息.当修改完了.经调试值都可传到后台代码去,但问题是明细表若有多条数据的话.最后一条会将前面的数据全部覆盖,数据全部变成一样的了..下面是我的整个后台修改代码..还请各位大哥Or大姐,小妹也行..帮我看下咯..给个提示..
/// <summary>
/// 修改方法
/// </summary>
/// <param name="m"></param>
/// <param name="listDetail"></param>
/// <returns></returns>
public bool GetUpdMsg(Main m, List<Detail> listDetail)
{
bool isTrue = false;
using (DBHelper dbh = new DBHelper())
{
dbh.GetBeginTransaction();
try
{
string sql1 = "update t_saleform set f_saleform_date=@date,f_customer=@customer,f_sales=@saler,f_remark=@remark where f_saleform_no=@danhao";
List<SqlParameter> pars = new List<SqlParameter>();
pars.Add(new SqlParameter("@danhao", SqlDbType.VarChar, 20));
pars[0].Value = m.F_saleform_no;
pars.Add(new SqlParameter("@date", SqlDbType.DateTime, 20));
pars[1].Value = m.F_saleform_date;
&n
你确定 f_saleform_no是t_saleform_detail这个表的主键么
改明细表时的条件要针对明细表中某条记录唯一
首先,要确保字段f_saleform_no在数据表中的值必须是唯一的。
然后,根据你的代码,可能问题出在SqlParameter的传参上。试着尝试以下方法:
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// 确认打开连接
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.Text; //执行类型:命令文本
// 依次把参数传入命令文本
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return cmd;
}
以上代码引自:http://www.cnblogs.com/marssl/archive/2009/02/07/1385988.html
给你个例子参考吧。 前台显示数据用的GRIDVIEW控件。 点击修改模板列时显示该条记录对应的相关信息。
下面的例子是提交修改后的信息,希望能帮上你! :-)
protected void btnSave_ServerClick(object sender, EventArgs e)
{
try
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("update Area set [area_code] = @area_code,[area_zipcode] = @area_zipcode where [area_id] = @area_id", cn);
cmd.Parameters.AddWithValue("area_code", txtAreaCode.Value);
cmd.Parameters.AddWithValue("area_zipcode", txtAreaZipCode.Value);
cmd.Parameters.AddWithValue("area_id", Convert.ToInt32(GridView1.SelectedValue)); //这里获得GRIDVIEW中绑定的主键列
cn.Open();
if (cmd.ExecuteNonQuery() == 1)
{
this.ClientScript.RegisterClientScriptBlock(GetType(), "", "<script type='text/javascript'>alert('修改地区信息成功.');window.location.href=window.location.href;</script>");
}
}
catch (SqlException)
{
}
catch (Exception)
{
}
}