嗨伙计们,我在我的aspx页面中使用此代码
<%for (int i=o;i<5;i++)
{%>
<asp: link button id=i text=i/>
<%}%>
Run Code Online (Sandbox Code Playgroud)
在它生产五个链接按钮,如
IIIII
但我只想要五个链接按钮
1 2 3 4 5
id = 1,2,3,4,5分别
我怎么能实现这一点
将占位符放在您想要链接的页面中:
<asp:PlaceHolder ID="LinkContainer" runat="server" />
Run Code Online (Sandbox Code Playgroud)
在代码隐藏的Page_Load方法中,您将链接放在占位符中:
for (int i = 1; i <= 5; i++) {
LinkButton link = new LinkButton();
link.ID = "Link" + i.ToString();
link.Text = i.ToString();
LinkContainer.Controls.Add(link);
}
Run Code Online (Sandbox Code Playgroud)
这样,控件将在页面循环的早期创建,如果您愿意,可以将服务器端事件连接到它们.
(注意我在id中添加了一个前缀.在某些情况下,只有数字的id可能会导致问题.)
这不是在ASP.Net中做事的最佳方式.动态控件有很多陷阱,你刚刚找到其中一个.这段代码好一点(确保页面在某个时刻调用DataBind()):
<%for (int i=0;i<5;i++)
{%>
<asp:LinkButton id="<%# i%>" runat="server" text="<%#i%>" />
<%}%>
Run Code Online (Sandbox Code Playgroud)
但你会发现事件和变化并没有按照你期望的方式连接起来,如果它起作用的话.只有五个,最好只需手动列出它们,事情会变得更容易.或者,如果它们来自某个地方的数据源,则使用转发器并以这种方式创建它们.
实际上,如果你能提供帮助,你根本不想将代码混合到你的aspx标记中.把它留给后面的代码吧!
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |