ServerContrl1.cs的代码 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace ServerControl1
{
[DefaultProperty("CurrentPage")]
[ToolboxData(" <{0}:ServerControl1 runat=server> </{0}:ServerControl1>")]
public class ServerControl1 : WebControl, IPostBackEventHandler
{
#region 当前页码
[Description("当前选择页码")]
[Bindable(true)]
[Category("Appearance")]
[DefaultValue(1)]
public int CurrentPage
{
get
{
String ss = Convert.ToString(ViewState["CurrentPage"]);
int nn = 0;
int.TryParse(ss, out nn);
return (nn <= 0) ? 1 : nn;
}
set
{
if (value <= 0)
{
ViewState["CurrentPage"] = 1;
}
else
{
ViewState["CurrentPage"] = value;
}
}
}
#endregion public delegate void PageChangeEventHandler(object sender, EventArgs e);
public event PageChangeEventHandler ChangePageClick;
public void RaisePostBackEvent(string eventArgument)
{
int PageIndex = int.Parse(eventArgument);
this.CurrentPage = PageIndex;
OnPageChangeClick(new EventArgs());
} protected virtual void OnPageChangeClick(EventArgs e)
{
if (ChangePageClick != null)
{
ChangePageClick(this, e);
}
}
protected override void RenderContents(HtmlTextWriter output)
{
StringBuilder Str = new StringBuilder();
Str.Append("当前:"+CurrentPage.ToString());
Str.Append(" <a id=\"" + this.UniqueID + "\" title='' href=\"javascript:" + Page.GetPostBackEventReference(this, (CurrentPage - 1).ToString()) + "\">上一页 </a>");
Str.Append(" <a id=\"" + this.UniqueID + "\" title='' href=\"javascript:" + Page.GetPostBackEventReference(this, (CurrentPage + 1).ToString()) + "\">下一页 </a>");
output.Write(Str.ToString());
}
}
}
调用页default.aspx 的 <%=ServerControl11.CurrentPage%>
<br />
<cc1:ServerControl1 ID="ServerControl11" runat="server" /> 这个显示是对的。即 <%=ServerControl11.CurrentPage%>和当前的页面值相同
而 default.cs 中 Response.Write(this.ServerControl11.CurrentPage); 却比当前的页面值晚一步。
请教大侠如何解决才能在 default.cs中同步显示
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace ServerControl1
{
[DefaultProperty("CurrentPage")]
[ToolboxData(" <{0}:ServerControl1 runat=server> </{0}:ServerControl1>")]
public class ServerControl1 : WebControl, IPostBackEventHandler
{
#region 当前页码
[Description("当前选择页码")]
[Bindable(true)]
[Category("Appearance")]
[DefaultValue(1)]
public int CurrentPage
{
get
{
String ss = Convert.ToString(ViewState["CurrentPage"]);
int nn = 0;
int.TryParse(ss, out nn);
return (nn <= 0) ? 1 : nn;
}
set
{
if (value <= 0)
{
ViewState["CurrentPage"] = 1;
}
else
{
ViewState["CurrentPage"] = value;
}
}
}
#endregion public delegate void PageChangeEventHandler(object sender, EventArgs e);
public event PageChangeEventHandler ChangePageClick;
public void RaisePostBackEvent(string eventArgument)
{
int PageIndex = int.Parse(eventArgument);
this.CurrentPage = PageIndex;
OnPageChangeClick(new EventArgs());
} protected virtual void OnPageChangeClick(EventArgs e)
{
if (ChangePageClick != null)
{
ChangePageClick(this, e);
}
}
protected override void RenderContents(HtmlTextWriter output)
{
StringBuilder Str = new StringBuilder();
Str.Append("当前:"+CurrentPage.ToString());
Str.Append(" <a id=\"" + this.UniqueID + "\" title='' href=\"javascript:" + Page.GetPostBackEventReference(this, (CurrentPage - 1).ToString()) + "\">上一页 </a>");
Str.Append(" <a id=\"" + this.UniqueID + "\" title='' href=\"javascript:" + Page.GetPostBackEventReference(this, (CurrentPage + 1).ToString()) + "\">下一页 </a>");
output.Write(Str.ToString());
}
}
}
调用页default.aspx 的 <%=ServerControl11.CurrentPage%>
<br />
<cc1:ServerControl1 ID="ServerControl11" runat="server" /> 这个显示是对的。即 <%=ServerControl11.CurrentPage%>和当前的页面值相同
而 default.cs 中 Response.Write(this.ServerControl11.CurrentPage); 却比当前的页面值晚一步。
请教大侠如何解决才能在 default.cs中同步显示
把Response.Write(this.ServerControl11.CurrentPage)语句写到OnChangePageClick事件中就可以同步了
ChangePageClick是你自己定义的事件,不用百度,在本页面查找就有:
public event PageChangeEventHandler ChangePageClick; 前台
<cc1:ServerControl1 ID="ServerControl11" runat="server" OnChangePageClick="ServerControl11_ChangePageClick"/>后台protected void ServerControl11_ChangePageClick(object sender, EventArgs e)
{
Response.Write(this.ServerControl11.CurrentPage);
}