public partial class user_user_log : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Color color = Color.FromArgb(51, 133, 209);
        GridView1.HeaderStyle.BackColor = color;
      
            string sql;
            sql = "select top 30 * from tab_userlog where userlog_userid='" + Session["userid"] + "' order by userlog_id desc ";
            SqlDataSource1.SelectCommand = sql;
         }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string sql,tx1,tx2;
        tx1=PageValidate.GetSafeStr(TextBox1.Text.ToString());
        tx2 = PageValidate.GetSafeStr(TextBox2.Text.ToString());
        sql = "select  * from tab_userlog where userlog_userid='"+Session["userid"]+"' ";
        if (tx1 != "" && tx2 != "")
        {
            DateTime etime=Convert.ToDateTime(tx2);
            sql = sql + " and userlog_date between '" + tx1 + "' and '" + (etime) + 1 + "' ";
        }
        sql = sql + " order by userlog_id desc ";
        SqlDataSource1.SelectCommand = sql;
       
    }
    
我用gridview自带的分页,想在页面第一次加载的时候,显示前30条记录,然后再点击按钮查询记录。
问题是,每次单击按钮查询出相应的记录,再点下一页又会变成无条件查询(像页面刚加载的时候一样)、
我有把 
Page_Load(object sender, EventArgs e)
string sql;
            sql = "select top 30 * from tab_userlog where userlog_userid='" + Session["userid"] + "' order by userlog_id desc ";
            SqlDataSource1.SelectCommand = sql;
这一段写在!ispostback里面,但是这样页面加载显示数据后,点下一页没有数据,该怎么弄呢?
怎么做呢?

解决方案 »

  1.   

    public partial class GridView_Page : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //设置分页的图片按钮,这些都可以在控件的属性表上的pagersetting里设置
            if (!IsPostBack)
            {
                GridView1.Caption = "这是一个GridView的小实验";  
                      //Caption属性类似于表名,显示在控件的正上方。
                GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast;
                GridView1.PagerSettings.NextPageImageUrl = "img/next.gif";
                GridView1.PagerSettings.PreviousPageImageUrl = "img/pre.gif";
                GridView1.PagerSettings.FirstPageImageUrl = "img/first.gif";
                GridView1.PagerSettings.LastPageImageUrl = "img/last.gif";
                GridView1.PageSize = 10;  //每页最多显示10条记录;
                BindData();
            }
        }
        private void BindData()
        {
            //将数据部署到GridView中
            string Constr = "server=localhost; uid=sa;pwd=123456;database=NorthWind";
            string sqlstr = "select * from products";
            SqlConnection con = new SqlConnection(Constr);
            SqlDataAdapter ad = new SqlDataAdapter(sqlstr, con);
            DataSet ds = new DataSet();
            ad.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }
        protected void GridView1_PageIndexChanged(object sender, EventArgs e)
        {
            //进行分页之后,重新部署数据
            BindData();
        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            //分页完成之前
            GridView1.PageIndex = e.NewPageIndex;
        }
        protected void GridView1_DataBound(object sender, EventArgs e)
        {
            //添加分页码显示
            GridViewRow bottomPagerRow = GridView1.BottomPagerRow;
            Label bottomLabel = new Label();
            bottomLabel.Text = "目前所在分页:(" + (GridView1.PageIndex + 1) + "/" + GridView1.PageCount + ")";
            bottomPagerRow.Cells[0].Controls.Add(bottomLabel);
        }
    }
      

  2.   

    弄个AspNetPager分页控件,设置其RecordCount属性可以配合分页存储过程使用
      

  3.   

    Page_Load里面的那段sql语句加上 if(!IsPostBack){执行sql}再实验下,另外页面还有gridview的EnableViewState属性记得设为true
      

  4.   

    用自带的分页建议绑定ObjectDatasource的模式
      

  5.   

    既然用了这个东西,那么你直接切回设计视图下用向导操作吧,设置参数来自Session就行了
      

  6.   


    <SelectParameters>
          <asp:SessionParameter
               Name="userid"
               SessionField="userid"
               DefaultValue="5" />
    </SelectParameters>SQL中用@userid占位