using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;public partial class transformone : System.Web.UI.Page
{
    public string userid = "";
    public string ser = "";
    public string are = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            userid = Request["username"].ToString();
            //ser = Request["server"];
            //are = Request["Area"];
            this.bind();
        }
    }
    protected void bind() 
    {
        if (Request["username"].ToString()!=null||Request["username"].ToString()!="")
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ddd"].ToString());
            con.Open();
            SqlCommand cmd1 = new SqlCommand("select * from Gifts where userid=@userid",con);
            cmd1.Parameters.Add("@userid",SqlDbType.VarChar).Value=Request["username"].ToString();
            cmd1.ExecuteNonQuery();
            DataTable dt = new DataTable();
            dt.Load(cmd1.ExecuteReader());
            if (dt.Rows.Count>0)
            {
                SqlCommand cmd2 = new SqlCommand("update Gifts set Treasures=@Treasures,RegisterTime=@RegisterTime where userid=@userid",con);
                cmd2.Parameters.Add("@userid", SqlDbType.VarChar).Value = Request["username"].ToString();
                cmd2.Parameters.Add("@Treasures", SqlDbType.VarChar).Value = "光涛信物";
                cmd2.Parameters.Add("@RegisterTime", SqlDbType.DateTime).Value = DateTime.Now;
                cmd2.ExecuteNonQuery();
                con.Close();
            }
            
            else
        {
                con.Open();
                SqlCommand cmd = new SqlCommand("insert into Gifts(userid,Treasures,RegisterTime) values(@p1,@p2,@p3)", con);
                cmd.Parameters.Add("@p1", SqlDbType.VarChar).Value = Request["username"].ToString();
                cmd.Parameters.Add("@p2", SqlDbType.VarChar).Value = "光涛信物";
                cmd.Parameters.Add("@p3", SqlDbType.DateTime).Value = DateTime.Now;
                cmd.ExecuteNonQuery();
                con.Close();
                //Response.Redirect("PledgeFor.aspx?username="+userid);
            }
        }
    }
}

解决方案 »

  1.   

    页面没有产生PostBack,就不会执行bind()方法
    只有在第一次加载页面时才执行
      

  2.   

    在ispostback那里设断点,看走里面了没
      

  3.   

    if (!Page.IsPostBack)
            {
               //首次加载页面时候加载的内容
            }
      

  4.   

            
    userid = Request["username"].ToString();            
     //ser = Request["server"];             
    //are = Request["Area"];             
    this.bind();去掉if (!Page.IsPostBack) 这个判断就行了      
      

  5.   

    你判断的太纠结了直接.lenth多省事啊还快
      

  6.   

    确定是Request["username"].ToString();  而不是Request.QueryString["username"].ToString();  ??
      

  7.   


           if (!Page.IsPostBack)
             {
                //首次加载页面时候加载的内容
             } 
    也就是说,你这个bind方法只执行一次。
      

  8.   

     userid = Request["username"].ToString();//获取返回当时登录的用户名
    你查询和判断存在与否的代码在哪?
    前面大神们都说了。所以Bind方法只执行一次。  if (!Page.IsPostBack)
             {
                //首次加载页面时候加载的内容
             } 你最好断点调试一下。
      

  9.   

    加断点到
     if (!Page.IsPostBack)
             {
                
    //
            } 
    然后看代码进去没,逐步调试到你的bind方法处!
      

  10.   

    bind()方法放到ispostback外面可以了
      

  11.   

    this.bind()事件只要在不产生回传的情况下是应该执行的。另if (Request["username"].ToString()!=null||Request["username"].ToString()!="") 上判断应改为
    if (!string.IsNullOrEmpty(Request["username"]))
      

  12.   

    你为什么要加上一个 this.bind() 中的 this 呢? 好像不加this 直接写在if(!Page.IsPostBack)就可以了吧???
      

  13.   

    因为你设置了!Page.IsPostBack,只在首次加载时,执行,你下个断点就能看到了,第一次是执行的,之后的操作就不执行了