用的是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这个以后用着快些:)

解决方案 »

  1.   

    你们说什么啊,我什么地方需要databind()了.............
    我用sqlatasource的updatequery来完成codefree,后台大部分代码都是没用的东西
      

  2.   

    name.Text = Session["name"].ToString().Trim();==>if(!this.IsPostBack)
    {
      name.Text = Session["name"].ToString().Trim();
    }
      

  3.   


    if(!this.IsPostBack)
    {
      name.Text = Session["name"].ToString().Trim();
    }
    ..........
      

  4.   

    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"]和数据库中那个记录的当前值进一致,所以才是显示修改成功,可以值又没有改变.
    关注中,有消息说~