private void SetDataBind()
{
    DataSet ds=new DataSet();
    string strSql="select * from [tblAgency] order by id desc ";
    ds=pClsDataControl.RequestToQuery(strSql);    PagedDataSource objPds=new PagedDataSource();
    objPds.DataSource=ds.Tables[0].DefaultView;
    objPds.AllowPaging=true;
    objPds.PageSize=8;
    int iPages=objPds.PageCount;    if(!IsPostBack)
    {
         //绑定一个DropDownList,让其实现转向第某页的功能;不过这里出现问题1:转到第某页后,DropDownList的框中总是显示第一页,而不是当前的页;这个怎么解决?
         SetDropDownList(iPages);
    }

    int CurPage;
    if (Request.QueryString["page"]!=null)
    {
CurPage=Convert.ToInt32(Request.QueryString["page"]);
    }
    else
    {
        CurPage=1;
    }    objPds.CurrentPageIndex=CurPage-1;
    lblCurrentPage.Text="共有"+iPages.ToString()+"页 | "+"当前页第"+CurPage.ToString()+"页";    if (!objPds.IsFirstPage)
    {
        lnkFirst.NavigateUrl=Request.CurrentExecutionFilePath +"?page=1";
        lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath +"?page="+Convert.ToString(CurPage-1);
    }    if (!objPds.IsLastPage)
    {
        lnkLast.NavigateUrl=Request.CurrentExecutionFilePath+"?page="+iPages;
        lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+"?page="+Convert.ToString(CurPage+1);
    }    repAgency.DataSource=objPds;
    repAgency.DataBind();
}//转向某页的DropDownList的SelectedIndexChanged事件的代码:
private void ddlPage_SelectedIndexChanged(object sender, System.EventArgs e)
{
    Response.Redirect(Request.CurrentExecutionFilePath+"?page="+ddlPage.SelectedValue);
}//

解决方案 »

  1.   

    //实现查询的DropDownList的SelectedIndexChanged事件:
    这个也存在一个问题,就是如果原来Repeater的CurrentPageIndex不是第一页(假设为第2页),那么查询结果当前CurrentPageIndex也是第2页,如果新的查询结果集没有第二页显示出来就好像是空集一样,这个是因为DataBind()里Request.QueryString那句决定的,怎样修改使得查询的时候结果不管Request.QueryString["id"]是不是为null都显示第一页呢?
    private void ddlCountry_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        SetDataBind();
    }
      

  2.   

    objPds.CurrentPageIndex=CurPage-1;对 CurrentPageIndex 无效