正在删除动态添加的LinkButton CommandName/CommandArgument设置
本文关键字:CommandName CommandArgument 设置 LinkButton 删除 动态 添加 | 更新日期: 2023-09-27 18:19:43
我正试图在表上方实现一个分页栏。我的页面上有一个静态<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属性渲染良好。我做错了什么?这完全是错误的做法吗?
如果要动态添加按钮,则需要在Page_Init
方法中进行添加,否则控件将不会参与ViewState。这可能就是问题所在。当然不会有帮助。
另外,这个名称是.Net动态分配给按钮的,因为您自己还没有指定ID。如果您要查找的是Request.Form
集合中可见的ID。
但是,老实说,我认为你的做法是错误的。如果你想要分页,那么你应该看看像GridView或ListView控件这样的控件,它在控件中内置了分页。这将是更标准的做事方式。GridView分页在这里解释,ListViews的一般教程在这里包括分页。
一般来说,分页是一个在ASP.Net中已经解决了很多次的问题,你真的不想重新发明轮子——我不会。此外,通过使用这些类型的网格控件,您将获得开箱即用的排序之类的东西——这是另一个非常常见的要求。