利用TextBox接受用户输入,按钮触发事件在数据库中搜索到一条数据后,在页面中用GridView显示,利用更新按钮修改后 可以更新回数据库,但是页面刷新后无法显示更新后的数据. 望高手赐教public partial class admin_Users_Update : System.Web.UI.Page
{
    private string tableName = "users";//表名
    private NameSearch ns = new NameSearch();//搜索信息类
    protected void Page_Load(object sender, EventArgs e)
    {    }    /// <summary>
    /// 点击按钮事件,出发搜索功能,将
    /// 搜索结果绑定到GridView上
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button1_Click(object sender, EventArgs e)
    {
        //搜索信息
        this.GridView1.DataSource = ns.getData(this.TextBox1.Text, tableName).Tables[tableName];
        this.DataBind();
    }   /// <summary>
   /// GridView按钮编辑事件
   /// </summary>
   /// <param name="sender"></param>
   /// <param name="e"></param>
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        this.GridView1.DataSource=ns.getData(this.TextBox1.Text,tableName).Tables[tableName];
        this.GridView1.EditIndex = e.NewEditIndex;
        this.DataBind();
    }
    
    /// <summary>
    /// GridView按钮取消事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        this.GridView1.DataSource = ns.getData(this.TextBox1.Text, tableName).Tables[tableName];
        this.GridView1.EditIndex = -1;
        this.DataBind();
    }    /// <summary>
    /// GridView更新事件,用于接受用户修改,更新数据库信息
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        this.GridView1.DataSource = ns.getData(this.TextBox1.Text, tableName).Tables[tableName];
        int index = e.RowIndex;
        //获得需要修改的行信息
        int uid=Convert.ToInt32(this.GridView1.Rows[index].Cells[0].Text.ToString().Trim());
        string uname = ((TextBox)this.GridView1.Rows[index].Cells[1].Controls[0]).Text.ToString().Trim();
        string upass = ((TextBox)this.GridView1.Rows[index].Cells[2].Controls[0]).Text.ToString().Trim();
        string email = ((TextBox)this.GridView1.Rows[index].Cells[3].Controls[0]).Text.ToString().Trim();        if (isEmail(email))//验证email地址格式是否合法
        {
            Users u = new Users();//创建表对象
            //给Users对象赋值
            u.Uid = uid;
            u.Uname = uname;
            u.Upass = upass;
            u.Email = email;
            //更新信息
            Update update = new Update();
            if (update.ToUpdate(u, tableName))//update方法检验数据是否更新成功
            {
                string strScript = "window.location.href='Delete.aspx';";
                strScript += "window.location.replace('Delete.aspx');";
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "updateOK", "<script language='javascript'>alert('更新成功');"+script+"</script>");
            }
            else
            {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "updateOK", "<script language='javascript'>alert('更新失败')</script>");
            }
        }
        else
        {
            Response.Write("<script language='javascript'>alert('请输入邮件地址的正确格式!如:[email protected]')</script>");
        }
    }    /// <summary>
    /// isEmail方法验证用户修改的Email地址是否合法
    /// </summary>
    /// <param name="inputEmail"></param>
    /// <returns> 返回bool类型</returns>
    public bool isEmail(string inputEmail)
    {
        string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
        Regex re = new Regex(strRegex);
        if (re.IsMatch(inputEmail))//格式正确返回真
        {
            return true;
        }
        else//不正确返回假
        {
            return false;
        }
    }    protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
    {
    }
}

解决方案 »

  1.   

       protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
        { 
            this.GridView1.DataSource = ns.getData(this.TextBox1.Text, tableName).Tables[tableName]; //这句是什么意思?放这里是不是不太合适,我觉得应该等修改完后再绑定
            int index = e.RowIndex; 
            //获得需要修改的行信息 
            int uid=Convert.ToInt32(this.GridView1.Rows[index].Cells[0].Text.ToString().Trim()); 
            string uname = ((TextBox)this.GridView1.Rows[index].Cells[1].Controls[0]).Text.ToString().Trim(); 
            string upass = ((TextBox)this.GridView1.Rows[index].Cells[2].Controls[0]).Text.ToString().Trim(); 
            string email = ((TextBox)this.GridView1.Rows[index].Cells[3].Controls[0]).Text.ToString().Trim();         if (isEmail(email))//验证email地址格式是否合法 
            { 
                Users u = new Users();//创建表对象 
                //给Users对象赋值 
                u.Uid = uid; 
                u.Uname = uname; 
                u.Upass = upass; 
                u.Email = email; 
                //更新信息 
                Update update = new Update(); 
                if (update.ToUpdate(u, tableName))//update方法检验数据是否更新成功 
                { 
                    string strScript = "window.location.href='Delete.aspx';"; 
                    strScript += "window.location.replace('Delete.aspx');"; 
                    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "updateOK", " <script language='javascript'>alert('更新成功');"+script+" </script>"); 
    //this.GridView1.DataSource = ns.getData(this.TextBox1.Text, tableName).Tables[tableName]; //这句放这里才对,是这样吗?好像是用的Linq,对这个不熟
                } 
                else 
                { 
                    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "updateOK", " <script language='javascript'>alert('更新失败') </script>"); 
                } 
            } 
            else 
            { 
                Response.Write(" <script language='javascript'>alert('请输入邮件地址的正确格式!如:[email protected]') </script>"); 
            } 
        }