我正在使用pageddatasource为我的转发器创建下一个/上一个函数。我使用以下代码在我的oninit中动态添加了链接按钮控件。
LinkButton lnkNext = new LinkButton();
lnkNext.Text = "Next";
lnkNext.Click += new EventHandler(NextPage);
if (currentPage != objPagedDataSource.PageCount)
{
pnlMain.Controls.Add(lnkNext);
}
所以在我的初始page_load中,下一个链接就可以了。我的objPagedDataSource中有5个页面。 currentPage变量是1.
“NextPage”事件处理程序如下所示
public void NextPage(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Cookies["PageNum"] == null)
{
HttpCookie cookie = new HttpCookie("PageNum");
cookie.Value = "1";
}
else
{
HttpCookie cookie = HttpContext.Current.Request.Cookies["PageNum"];
cookie.Value = (Convert.ToInt32(cookie.Value) + 1).ToString();
}
this.BindRepeater();
}
所以我正在递增我用来跟踪页码然后重新绑定转发器的cookie。
这是主要问题。我第一次单击Next,它可以工作,它没有任何问题。当在第2页上时,我单击“下一步”,它将返回到第1页。似乎“下一个”事件未正确连接。不知道为什么,任何想法?
答案 0 :(得分:1)
您需要确保每次回发都将动态控件添加到Page。动态控件经常会造成很大的痛苦 - 在这种情况下,以正常方式在标记中声明“Next”LinkButton可能要容易得多,只需在不需要时设置Visible = false
。
答案 1 :(得分:1)
当您动态加载用户控件时,您必须设置ID属性而不使用ID属性事件不会触发。这是我动态调用用户控件的示例代码
private void LoadUserControl()
{
string controlPath = LastLoadedControl;
if (!string.IsNullOrEmpty(controlPath))
{
PlaceHolder1.Controls.Clear();
UserControl uc = (UserControl)LoadControl(controlPath);
uc.ID = "uc"; //Set ID Property here
PlaceHolder1.Controls.Add(uc);
}
}