ASP.NET 中继器模板,每个第 N 个元素的条件代码
我正在使用 asp.net 转发器来创建一堆图像。 图像标记都是相同的,因此标准
就可以了。
但是,我想将 K 张图像包装在一个 div 中。 假设我将 25 个以上的图像绑定到中继器,并且我想要每个 div 5 个图像。 如何有条件地为 div 创建开始和结束标签?
这种情况是否更适合 for 循环?
I'm using an asp.net repeater to create a bunch of images. The image markup is all the same so the standard <ItemTemplate>
is fine.
However, I want to wrap K images in a div. Lets say I bind 25+ images to the repeater and I want 5 images per div. How do I go about conditionally creating the start and close tags for the div?
Is this a case better suited for a for loop.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这应该对您有用,不需要后面的代码中的任何内容(除了绑定转发器..):
This should work for you, with no need for anything in the code behind (other than binding the repeater..):
这就是 Asp.Net WebForms 可以为您提供令人难以置信的 RAD 效率的地方。
您可以使用新的 ListView 控件,并设置每个“组”的项目数,这将允许您设置围绕组以及每个单独项目的 HTML。 这样您就可以用条件标签包围该组。
Here is where Asp.Net WebForms can give you incredible RAD efficiency.
You can use the new ListView control, and set the number of items per "group", which will allow you to setup the HTML that surrounds a group, as well as each individual item. This way you can surround the group with the conditional tags.
如果您想将标记保留在 ASPX 页面上,您还可以尝试 David 方法的这种变体:
在 aspx 页面上:
在代码隐藏的 ItemDataBound 事件中:
If you want to keep your markup on the ASPX page you could also try this variation on David's method:
On the aspx page:
In the ItemDataBound event in the codebehind:
将两个空标签控件添加到您希望放置 div 标签的 Repeaters ItemTemplate 中。
然后将 ItemDataBound 事件添加到 Repeater。
然后将此代码添加到 ItemDataBound 事件中:
注意 - 这将需要一些调整来处理第一个 div,您可能需要执行类似 If (e.Item.ItemIndex + 1) Mod 5 = 0 的操作让 div 准确地显示在您想要的位置。
欲了解更多信息:
DataListItem.ItemIndex 属性
DataList.ItemDataBound活动
Add two empty label controls into your Repeaters ItemTemplate where you'd want your div tags to be.
Then add an ItemDataBound event to the Repeater.
Then add this code into the ItemDataBound event:
Note - This will need some tweaking to handle the first div and you may need to do something like If (e.Item.ItemIndex + 1) Mod 5 = 0 to get the divs to show up exactly where you want them.
For more info:
DataListItem.ItemIndex Property
DataList.ItemDataBound Event