首页 新闻 赞助 找找看

高手是怎么炼成的...来看看

0
悬赏园豆:5 [已关闭问题]

小弟今天做了个修改功能,前台是这样子的.选中一行数据.点击修改,便可弹出修改的这条数据的主表信息及明细信息.当修改完了.经调试值都可传到后台代码去,但问题是明细表若有多条数据的话.最后一条会将前面的数据全部覆盖,数据全部变成一样的了..下面是我的整个后台修改代码..还请各位大哥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

loi的主页 loi | 初学一级 | 园豆:191
提问于:2009-09-11 22:33
< >
分享
其他回答(3)
0

你确定 f_saleform_no是t_saleform_detail这个表的主键么

LowerAI | 园豆:562 (小虾三级) | 2009-09-11 23:15
0

改明细表时的条件要针对明细表中某条记录唯一

zjy | 园豆:3194 (老鸟四级) | 2009-09-11 23:17
0

首先,要确保字段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

Kinglee | 园豆:3158 (老鸟四级) | 2009-09-11 23:26
0

给你个例子参考吧。  前台显示数据用的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)
        {

        }
    }

Perfect Solution | 园豆:205 (菜鸟二级) | 2009-09-12 13:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册