一个*.aspx中有2个小页面 当*.aspx?page=1时显page1页面,当*.aspx?page=2时显示page2页面。
现在我在page2页面里安置了一个Gridview控件,可是运行时却无法显示Gridview里的内容(我在*.aspx?page=1里有按钮,已经跳转到了page2页面了)
以下是*.aspx的代码
protected void Page_Load(object sender, EventArgs e)
{
    page = Request.QueryString["page"];
        switch (page)
        {
            case "1": page1(); break;
            case "2": page2(); break;        }
}
protected void page1()
{
    //用于加载*.aspx?page=1页面里的相关数据
}
 protected void page2()
{
   //用于绑定Gridview的数据
}然而如果代码时这样 仅改
protected void Page_Load(object sender, EventArgs e)
{
  page1();
  page2();
}则page2的Gridview里的内容能正常显示了  请问只是什么原因????

解决方案 »

  1.   

    一个新问题,运行后出现了:“UserHomeGV”上同时定义了 DataSource 和 DataSourceID。请移除一个定义。后台代码:
    GetUserHomrBGridView(UserHomeGV, Session["UserName"].ToString());调用的方法:
    public static bool GetUserHomrBGridView(GridView GridViewName,string UserName)
        {
            string connstr = ConfigurationSettings.AppSettings["connstr"];
            SqlConnection conn = new SqlConnection(connstr);
            SqlCommand cmd = new SqlCommand("GetUserHomrBGridView", conn);
            cmd.CommandType = CommandType.StoredProcedure;        //UserName
            SqlParameter ParameterUserName = new SqlParameter("@UserName", SqlDbType.NVarChar, 12);
            ParameterUserName.Value = UserName;
            cmd.Parameters.Add(ParameterUserName);        //BAddress
            SqlParameter ParameterBAddress = new SqlParameter("@BAddress",SqlDbType.NVarChar,16);
            ParameterBAddress.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(ParameterBAddress);        //MMoney
            SqlParameter ParameterMMoney = new SqlParameter("@MMoney",SqlDbType.NVarChar,4);
            ParameterMMoney.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(ParameterMMoney);        //AddTime
            SqlParameter ParameterAddTime = new SqlParameter("@AddTime",SqlDbType.DateTime);
            ParameterAddTime.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(ParameterAddTime);        try
            {
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                conn.Open();
                da.Fill(ds);
                conn.Close();
                GridViewName.DataSource = ds;
                GridViewName.DataBind();  
            }
            catch
            {
                return false;
            }
            return true;
        }
      

  2.   

    1,我觉得需要说明page类型
    string page   =   Request.QueryString[ "page "]; 
      

  3.   

    public   static   bool   GetUserHomrBGridView(GridView   GridViewName,string   UserName) 
    SqlCommand   cmd   =   new   SqlCommand( "GetUserHomrBGridView ",   conn); 
    我觉得的你的存储过程名字和这个类名重名引起的
      

  4.   

    不好意思3楼的朋友 page我在前面定义过了时STRING
      

  5.   

    楼主,你的问题让我对asp.net刚刚建立起来的信心全没了。
      

  6.   

    你的.aspx页面上不要使用Datasource控件了,看看你的gridview的属性,里面有个DatasourceID,里面删掉ID名。。
    因为你是直接写在后台代码页面中的.....
      

  7.   

    gridview中的DatasourceID为空 我看过了
    Datasource也么用不过代码改成
    public   static   bool   GetUserHomrBGridView(GridView   GridViewName,string   UserName) 
            {    try
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "select UserName,BAddress,MMoney,AddTime from BuildingDetail where UserName='"+UserName+"'";
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                conn.Open();
                da.Fill(ds);
                conn.Close();
                GridViewName.DataSource = ds;
                GridViewName.DataBind();  
            }
            catch(Exception ex)
            {
                throw(ex);
            }
            return true;
        }
    就么问题 MAYBE我的存储过程有问题 但是我着看不出哪有。。ALTER procedure [dbo].[GetUserHomrBGridView]
    (
       @UserName nvarchar(12),
       @BAddress nvarchar(16) output,
       @MMoney nvarchar(4) output,
       @AddTime datetime output
    )
    as
    select 
      @BAddress =BAddress,
      @MMoney=MMoney,
      @AddTime=AddTime
    from
     BuildingDetail
    where
     UserName=@UserName