关于修改数据的问题。
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){} --------------------编程问答-------------------- 这个用来做什么啊 --------------------编程问答-------------------- 我觉得还是代码的问题也,因为内容就能更新成功,其它的都不能 --------------------编程问答-------------------- --------------------编程问答--------------------
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