当前位置:编程学习 > C#/ASP.NET >>

关于修改数据的问题。

 protected void Page_Load(object sender, EventArgs e)
    {
               string view = Request.QueryString["news_id"];
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        con.Open();
        SqlCommand cmd = new SqlCommand("viewnew",con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@news_id", SqlDbType.VarChar, 50);
        cmd.Parameters["@news_id"].Value = view;
        this.viewnews.DataSource = cmd.ExecuteReader();
        this.viewnews.DataBind();
        con.Close();
      
    }
    protected void Submit1_ServerClick(object sender, EventArgs e)
    {
        string v = Request.QueryString["news_id"];

        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        con.Open();
        SqlCommand addcmd = new SqlCommand("modifynews", con);
        addcmd.CommandType = CommandType.StoredProcedure;
        addcmd.Parameters.Add("@news_id", SqlDbType.VarChar, 50);
        addcmd.Parameters["@news_id"].Value = v;
        foreach (DataListItem item in viewnews.Items)
        {
            TextBox txt = item.FindControl("NewTitle") as TextBox;
            if (txt != null)
            {
                addcmd.Parameters.Add("@NewTitle", SqlDbType.VarChar, 200);
                addcmd.Parameters["@NewTitle"].Value = txt.Text;
            }
        }
        foreach (DataListItem item in viewnews.Items)
        {
            TextBox txt1 = item.FindControl("Author") as TextBox;
            if (txt1 != null)
            {
                addcmd.Parameters.Add("@Author", SqlDbType.VarChar, 50);
                addcmd.Parameters["@Author"].Value = txt1.Text;
            }
        } 
        addcmd.Parameters.Add("@content1", SqlDbType.VarChar);
        addcmd.Parameters["@content1"].Value = Request.Form["content1"].ToString();
        foreach (DataListItem item in viewnews.Items)
        {
            TextBox txt2 = item.FindControl("Hits") as TextBox;
            if (txt2 != null)
            {
                addcmd.Parameters.Add("@Hits", SqlDbType.VarChar, 50);
                addcmd.Parameters["@Hits"].Value = int.Parse(txt2.Text.ToString());
            }
        }
        foreach (DataListItem item in viewnews.Items)
        {
            TextBox txt3 = item.FindControl("Updatetime") as TextBox;
            if (txt3 != null)
            {
                addcmd.Parameters.Add("@Updatetime", SqlDbType.VarChar, 50);
                addcmd.Parameters["@Updatetime"].Value = DateTime.Parse(txt3.Text);
            }
        }
        this.viewnews.DataSource = addcmd.ExecuteReader();
        this.viewnews.DataBind();
        con.Close();
        Response.Write("<script>alert('新闻修改成功');window.location.href='NewsManage.aspx'</script>");
    }
}
  
修改后只有内容可以被修改,其它都没变
--------------------编程问答-------------------- 设置断点 查看 新闻的其他内容的值的变化 --------------------编程问答--------------------  addcmd.Parameters.Add("@Hits", SqlDbType.VarChar, 50);
  addcmd.Parameters["@Hits"].Value = int.Parse(txt2.Text.ToString());


  addcmd.Parameters.Add("@Updatetime", SqlDbType.VarChar, 50);
  addcmd.Parameters["@Updatetime"].Value = DateTime.Parse(txt3.Text);

==============
传参根据类型 对应来传参
page_load中添加 if(ispostback)

PS:你的代码foreach这么多次累不累?
    一个foreach能搞定的事,为何要分那么多个foreach? --------------------编程问答-------------------- addcmd.Parameters.Add("@Updatetime", SqlDbType.VarChar, 50);
addcmd.Parameters["@Updatetime"].Value =txt3.Text;
检查参数类型,一个foreach即可 --------------------编程问答-------------------- 我改了啊,都不行 --------------------编程问答-------------------- 绑定的代码要写在IsPostBack里

楼上说的对啊 楼主只用一个foreach不就行了 --------------------编程问答-------------------- page_load中添加 if(ispostback)
=========
page_load中添加 if(!IsPostback){} --------------------编程问答-------------------- 这个用来做什么啊 --------------------编程问答-------------------- 我觉得还是代码的问题也,因为内容就能更新成功,其它的都不能 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 8 楼 wenmi 的回复:
我觉得还是代码的问题也,因为内容就能更新成功,其它的都不能


  addcmd.Parameters["@content1"].Value = Request.Form["content1"].ToString();
因为内容是通过request付值的
其他都是通过findcontrol找到textbox后来取值的,肯定没有取到值
1.确认各个控件ID正确
2.将 if (txt1 != null)修改成  if (!string.IsNullOrEmpty(txt.Text.Trim()))
   其他foreach内的类似 --------------------编程问答-------------------- 还是不行啊。。 --------------------编程问答-------------------- 单步调试吧
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,