public int pageIndex //当前页码,非设计属性

get 

EnsureChildControls();
Object obj=ViewState["pageIndex"]; 
return (obj==null)?1:Convert.ToInt32(obj); 

set 

EnsureChildControls();
ViewState["pageIndex"]=value; 

}  #region 重写方法:创建添加子控件
protected override void CreateChildControls() 


Controls.Clear(); 
if(!Page.IsPostBack) 


ClearChildViewState();
}
DataBind();
buildtable();

}
private void lb_Click(Object Sender,CommandEventArgs e) 

switch(e.CommandArgument.ToString()) 

case "PageUp": 
 
pageIndex=pageIndex -1; 
DataBind();

buildtable(); 
break; 
case "PageDown": 

pageIndex=pageIndex +1; 
//CreateChildControls();
break; 
 


}

解决方案 »

  1.   

    我定义一个pageIndex 属性 ,重写CreateChildControls
    lb_Click 动态创建的控件的事件。pageIndex 怎么不能累加,viewstate 应该可以的
      

  2.   

    http://www.mzedu.com/这个网站上有详细的解说!
      

  3.   

    public int pageIndex//当前页码,非设计属性

    get 

    Object obj=ViewState["pageIndex"]; 
    return (obj==null)?1:Convert.ToInt32(obj); 

    set 

    ViewState["pageIndex"]=value; 

    } #region 重写方法:创建添加子控件
    protected override void CreateChildControls() 
    { Controls.Clear(); 
    DataBind();  
    buildtable();}
    private void lb_Click(Object Sender,CommandEventArgs e) 

    switch(e.CommandArgument.ToString()) 

    case "PageUp": 
     
    pageIndex=pageIndex -1; 
    this.ChildControlsCreated = false;
    break; case "PageDown": pageIndex=pageIndex +1; 
    this.ChildControlsCreated = false;
    break; 
     

    }protected override void OnPreRender(EventArgs e)
    {
        EnsureChildControls();
        base.OnPreRender(e);
    }
      

  4.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconreceivingpostbackdatachangednotifications.htm
      

  5.   

    #region 重写方法:数据绑定
    public override void DataBind() 

    base.DataBind();  ChildControlsCreated = false;  if (connectionString == "" || tableName == "") 
    return;  // 取得数据
    FetchData(); // 绑定数据到控件
    _rp.DataSource = _dataSource; 

    MyTemplate.rowcount =0;

    return; 
    }
    #endregion
    #region 建立分页导航方法
    private void BuildNavigator(TableRow tr) 
    {   

    TableCell td1=new TableCell();  

    if (_minrecode>1)
    {
    // ImageButton lbForward=new ImageButton();
    // lbForward.CausesValidation=false;
    // lbForward.ImageUrl="../img/pageup.gif";
    // lbForward.CommandArgument="Forward";
    // lbForward.Command += new CommandEventHandler(lbF_Click);
    // td1.Controls.Add(lbForward);
    }
    else
    {
    // LiteralControl lcForward=new LiteralControl();
    // lcForward.Text="<a><img src=\"../img/pageup.gif\" border=0></a>";
    // td1.Controls.Add(lcForward);

    };
    这两个关系不大,我也上传了,第一编点击按钮 pageIndex=2,第二遍在点击就变1了,说明viewstate值是初始值.怎么解决
      

  6.   

    你没看我给你的帮助么?
    自定义服务器控件,要保留状态,需要实现IPostBackDataHandler
      

  7.   

    using System;
    using System.Web;
    using System.Web.UI;
    using System.Collections.Specialized;namespace CustomControls{
          public class MyTextBox: Control, IPostBackDataHandler {
                public String Text {
                      get {
                            return (String) ViewState["Text"];
                      }
                      set { 
                            ViewState["Text"] = value;
                      }                  
                }
                
                public event EventHandler TextChanged;
                
                public virtual bool LoadPostData(string postDataKey, 
                      NameValueCollection values) {
                      String presentValue = Text;
                      String postedValue = values[postDataKey];
                      if (!presentValue.Equals(postedValue)){
                            Text = postedValue;
                            return true;
                      }
                      return false;
                }
                
                public virtual void RaisePostDataChangedEvent() {
                      OnTextChanged(EventArgs.Empty);     
                }
                
                protected virtual void OnTextChanged(EventArgs e){
                      if (TextChanged != null)
                            TextChanged(this,e);
                }
                
                protected override void Render(HtmlTextWriter output) {
                    output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
                    output.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
                    output.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
                    output.RenderBeginTag(HtmlTextWriterTag.Input);
                    output.RenderEndTag();
                }
          }    
    }
      

  8.   

    解决了                  output.RenderBeginTag(HtmlTextWriterTag.Input);
                    output.RenderEndTag();其他都不用加,就加这两句话就好用了,为什么