用的是sqldatasource
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:EBusinessConnectionString %>"
OnUpdated="SqlDataSource1_Updated" ProviderName="<%$ ConnectionStrings:EBusinessConnectionString.ProviderName %>"
UpdateCommand="UPDATE Categories SET name =@newname where category_id=@newcategory_id;">
<UpdateParameters>
<asp:ControlParameter ControlID="name" Name="newname" PropertyName="Text" />
<asp:SessionParameter Name="newcategory_id" SessionField="category_id" />
</UpdateParameters>
</asp:SqlDataSource>
后台代码:
public partial class Admin_categories_edit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
name.Text = Session["name"].ToString().Trim();
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("categories_mgr.aspx");
} protected void SqlDataSource1_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows > 0)
{
// Perform any additional processing, such as sending an e-mail notification.
Label1.Text = Request.LogonUserIdentity.Name +
" changed user information sucessfully!";
}
else
{
Label1.Text = "No data updated!";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.Update();
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}
}
总能显示e.AffectedRows > 0出现的changed user information sucessfully,但是数据库中显示的数据还是原来那个,我想可能是改变的数据是老数据,但是为什么会这个样子?还有我不想用ado或者其他办法解决,因为ms这个以后用着快些:)
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:EBusinessConnectionString %>"
OnUpdated="SqlDataSource1_Updated" ProviderName="<%$ ConnectionStrings:EBusinessConnectionString.ProviderName %>"
UpdateCommand="UPDATE Categories SET name =@newname where category_id=@newcategory_id;">
<UpdateParameters>
<asp:ControlParameter ControlID="name" Name="newname" PropertyName="Text" />
<asp:SessionParameter Name="newcategory_id" SessionField="category_id" />
</UpdateParameters>
</asp:SqlDataSource>
后台代码:
public partial class Admin_categories_edit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
name.Text = Session["name"].ToString().Trim();
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("categories_mgr.aspx");
} protected void SqlDataSource1_Updated(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows > 0)
{
// Perform any additional processing, such as sending an e-mail notification.
Label1.Text = Request.LogonUserIdentity.Name +
" changed user information sucessfully!";
}
else
{
Label1.Text = "No data updated!";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlDataSource1.Update();
}
catch (Exception err)
{
Label1.Text = err.Message;
}
}
}
总能显示e.AffectedRows > 0出现的changed user information sucessfully,但是数据库中显示的数据还是原来那个,我想可能是改变的数据是老数据,但是为什么会这个样子?还有我不想用ado或者其他办法解决,因为ms这个以后用着快些:)
我用sqlatasource的updatequery来完成codefree,后台大部分代码都是没用的东西
{
name.Text = Session["name"].ToString().Trim();
}
if(!this.IsPostBack)
{
name.Text = Session["name"].ToString().Trim();
}
..........
看了半天
如果说我没有看错,你应该是这样的一种情况
首先你肯定是Update成功了的,也就是说你的e.AffectedRows > 0恒真
你仔细看看你的那条更新语句
(UPDATE Categories SET name =@newname where category_id=@newcategory_id)
应该是把当前满足条件的name字段赋值你登录的Session["name"]
可你的Session["name"]和数据库中那个记录的当前值进一致,所以才是显示修改成功,可以值又没有改变.
关注中,有消息说~