繁体   English   中英

动态添加的LinkBut​​ton CommandName / CommandArgument设置被删除

[英]Dynamically added LinkButton CommandName/CommandArgument settings being dropped

我正在尝试在桌子上方实现分页栏。 我的页面上有一个静态的<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。 如果您正在寻找ID,那么它将在Request.Form集合中可见。

但是-老实说,我认为您的做法是错误的。 如果要分页,则应该查看类似GridView或ListView控件的控件,该控件内置了分页功能。 那将是更标准的服务方式。 GridView分页在这里进行了说明而ListViews的一般教程(包括分页) 在此处进行了说明

通常,分页是一个在ASP.Net中已经解决了很多次的问题,您确实不想重新发明轮子-嗯,我不会。 同样,通过使用这些类型的网格控件,您将获得开箱即用的排序功能-另一个非常常见的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM