我正在构建的寻呼机控件存在问题。我的代码如下
protected override void CreateChildControls()
{
base.CreateChildControls();
pnl = new Panel { ID = "NewsPager", CssClass = "NewsPager" };
Controls.Add(ddl);
AddPagerControls();
}
AddPagerControls 添加了一堆使用相同事件处理程序的 LinkButtons:
private void li_Click(object sender, EventArgs e)
{
selectedValue = ((LinkButton) sender).CommandArgument;
AddPagerControls();
}
现在发生的事情是,当我添加“下一个”链接按钮时,它会使用以下命令正确设置 CommandArgument:
var liNext = new LinkButton {ID = "NewsPagerLinkNext", Text = ">", CommandArgument = (int.Parse(value) + 1).ToString()};
liNext.Click += new EventHandler(li_Click);
pnl.Controls.Add(liNext);
即如果当前页面为2,那么在调试代码时“Next”按钮的CommandArgument将为3。但是,当页面呈现并且我单击下一个按钮时,它会工作一次(从第 1 页到第 2 页),但它始终是 2,即使在代码中它设置为 3。所以当控制时必须发生一些事情被渲染。
我在这里有点不知所措。我尝试将 CreateChildControls 中对 AddPagerControls 的调用更改为 if(!Page.IsPostBack){AddPagerControls();} 但事件处理程序根本不会触发。
编辑:当从事件处理程序调用 AddPagerControls 方法时,PSI 执行 pnl.Controls.Clear() ,否则 LinkButtons 将被添加两次。
编辑:PPS我每次都重新计算要添加的链接按钮,因为如果存在更多页面,我只需要显示 5 个链接,即
<< < 2 3 4 5 6 7 > >>