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>");
    }
}
  
修改后只有内容可以被修改,其它都没变

解决方案 »

  1.   

     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?
      

  2.   

    addcmd.Parameters.Add("@Updatetime", SqlDbType.VarChar, 50);
    addcmd.Parameters["@Updatetime"].Value =txt3.Text;
    检查参数类型,一个foreach即可
      

  3.   

    绑定的代码要写在IsPostBack里楼上说的对啊 楼主只用一个foreach不就行了
      

  4.   

    page_load中添加 if(ispostback)
    =========
    page_load中添加 if(!IsPostback){}
      

  5.   


      addcmd.Parameters["@content1"].Value = Request.Form["content1"].ToString();
    因为内容是通过request付值的
    其他都是通过findcontrol找到textbox后来取值的,肯定没有取到值
    1.确认各个控件ID正确
    2.将 if (txt1 != null)修改成  if (!string.IsNullOrEmpty(txt.Text.Trim()))
       其他foreach内的类似