在分页控件上作了连接可以指到一个页面显示该条记录详细内容,并且把分页控件和显示详细内容的页面放在了同一页面上。现在问题是如果分页在第二页或之后,点击连接显示详细内容后,当前页又成了第一页,即每次重新显示分页控件页面总是第一页,怎么解决该问题?

解决方案 »

  1.   

    记住当前页的索引值 iCurrentIndex ,然后重新设置的 DataGrid 的当前页的索引值为iCurrentIndex
      

  2.   

    怎样记住,传递参数么,我不是用datagrid,用的是自编的数据控件
      

  3.   

    要我记住以前回答过的问题好像不太可能吧确认你的初始databinding是在
    if (!IsPostBack)
    {
     //初始databinding
    }里进行的或确认你的显示详细内容的编码不改变databinding,或把你的编码贴出来
      

  4.   

    我在页面的page_load中:
    Response.Write("<script>alert('"+Tbpage1.CurrentPageIndex+"')</script>");
    总是比在控件中的值慢一步,请问是怎么回事?可以实现同步么?
    控件中:
    public int CurrentPageIndex
    {
        get
        {
    if (ViewState["CurrentPageIndex"] == null)
               return 1;
    return (int)ViewState["CurrentPageIndex"];
        }
      set
       {
    ViewState["CurrentPageIndex"] = value;
       }
    }
    private void Gopageclicked(Object sender, EventArgs e)
    {
        LinkButton lb = (LinkButton)sender;
        CurrentPageIndex=System.Convert.ToInt16(lb.ID.Substring(6));
       HttpContext.Current.Response.Write("<script>alert('"+CurrentPageIndex+"')</script>");
    }
      

  5.   

    because you change it in Gopageclicked() and it is executed after Page_load! try to do it in Page_PreRender, but don't use Response.Write, use Page's RegisterStartupScript
      

  6.   

    你是指在调用控件的页面上而不是在控件里添加prerender事件方法么?
    如下:this.PreRender+=new System.EventHandler(this.Page_Preload);
      

  7.   

    我还是不太明白,既然Gopageclicked() 在Page_load之后执行,Page_PreRender不是在Page_load之前么,为什么就可以了呢?
      

  8.   

    如果控件中对某个变量的赋值是在OnPreRender中执行的,那么在调用该控件的页面中要想正确获得该值应该在哪里呢?
      

  9.   

    >>>Page_PreRender不是在Page_load之前么,note, it is PreRender, Page_PreRender runs after all the click events, so you will get the right value after Gopageclicked is called
      

  10.   

    在页面中,以下代码弹出的值总是0
    private void Page_PreLoad(object sender, System.EventArgs e)
    {
       if(!Page.IsPostBack)
       {
    nstartcount=Tbpage1.nStartcount;
    Page.RegisterStartupScript("tt","<script>alert('"+nstartcount+"')</script>");
       }
    }
    在控件中,以下代码则弹出正确的值,请问是怎么回事?
    protected override void OnPreRender(System.EventArgs e)
    {
        nStartcount=(CurrentPageNo-1)*PageSize;
        HttpContext.Current.Response.Write("<script>alert('"+nStartcount+"')</script>");
    }
      

  11.   

    what is PreLoad? 2.0??for 1.*, see the following documentation for control's life cycle:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconControlExecutionLifecycle.asp
      

  12.   

    是1.1的,我改成每次回调时读取值,正好比实际值慢一步:
    private void Page_PreLoad(object sender, System.EventArgs e)
    {
       if(Page.IsPostBack)
       {
    nstartcount=Tbpage1.nStartcount;
    Page.RegisterStartupScript("tt","<script>alert('"+nstartcount+"')</script>");
       }
    }
    我看了你给的网页,控件的OnPreRender中是不是不应该做赋值操作啊!