正在删除动态添加的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属性渲染良好。我做错了什么?这完全是错误的做法吗?

正在删除动态添加的LinkButton CommandName/CommandArgument设置

如果要动态添加按钮,则需要在Page_Init方法中进行添加,否则控件将不会参与ViewState。这可能就是问题所在。当然不会有帮助。

另外,这个名称是.Net动态分配给按钮的,因为您自己还没有指定ID。如果您要查找的是Request.Form集合中可见的ID。

但是,老实说,我认为你的做法是错误的。如果你想要分页,那么你应该看看像GridView或ListView控件这样的控件,它在控件中内置了分页。这将是更标准的做事方式。GridView分页在这里解释,ListViews的一般教程在这里包括分页。

一般来说,分页是一个在ASP.Net中已经解决了很多次的问题,你真的不想重新发明轮子——我不会。此外,通过使用这些类型的网格控件,您将获得开箱即用的排序之类的东西——这是另一个非常常见的要求。