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;
}
}
{
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;
}
}
lb_Click 动态创建的控件的事件。pageIndex 怎么不能累加,viewstate 应该可以的
{
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);
}
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值是初始值.怎么解决
自定义服务器控件,要保留状态,需要实现IPostBackDataHandler
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();
}
}
}
output.RenderEndTag();其他都不用加,就加这两句话就好用了,为什么