我正在尝试在表格上方实现分页栏。我的页面上有一个静态<ul>
元素:
<div><center><ul id="topnav" runat="server"></ul></center></div>
在我的Page_Load事件中,我尝试使用页码加载它:
foreach ( int linkpage in linkpages ) {
HtmlGenericControl li;
LinkButton pbut;
li = new HtmlGenericControl( "li" );
pbut = new LinkButton();
pbut.CommandName = "page";
pbut.CommandArgument = linkpage.ToString();
pbut.Text = linkpage.ToString();
li.Controls.Add( pbut );
topnav.Controls.Add( li );
}
但是,当实际呈现控件时,它会以名称'ctlXX'(其中XX是递增的数字)发布并且没有参数,因此我无法获取页码。但是,.Text属性呈现正常。我究竟做错了什么?这完全是错误的做法吗?
答案 0 :(得分:1)
如果要动态添加按钮,则需要在Page_Init
方法中执行此操作,否则控件将不会参与ViewState。可能是问题所在。当然它无济于事。
此名称也是.Net动态分配给按钮的名称,因为您没有自己指定ID。如果您正在寻找的话,那就是Request.Form
集合中可见的ID。
但是 - 我认为你的做法是诚实的。如果你想要分页,那么你应该看一下GridView或ListView控件,它在控件中内置了分页。那将是更加标准的做事。 GridView分页解释了here和ListViews的一般教程,包括分页here。
一般来说,分页是一个在ASP.Net中已经解决过很多次的问题,你真的不想重新发明轮子 - 我不会。此外,通过使用这些类型的网格控件,您可以获得开箱即用的选项 - 另一个非常常见的要求。