gpt4 book ai didi

ASP.NET 垂直包装由转发器生成的列表

转载 作者:行者123 更新时间:2023-11-28 10:23:37 27 4
gpt4 key购买 nike

我的转发器生成了一个链接列表,这些链接需要按特定顺序出现。这意味着我需要我的列表看起来像这样

-Item1 -Item4
-Item2 -Item5
-Item3

我发现的每个解决方案都涉及了解列表中的内容以及设置列表应该中断的类。我的问题是它可能是 1 到 18 个元素。

所以我的问题是,是否有一种好的、简单的方法来垂直包装使用 ASP.NET 转发器控件动态生成的列表?

最佳答案

这是一个想法。这假定在换行之前要垂直显示的元素数是一个固定数,或者至少是一个可以由服务器确定的数(请参阅 VerticalWrapLimit 常量)。 IE。与用户浏览器的高度无关。

<script runat="server">
void Page_Load(object sender, EventArgs e)
{
rptVerticalWrap.DataSource = new[] {
new { ID = 1, Name = "ABC" },
new { ID = 2, Name = "BCD" },
new { ID = 3, Name = "CDE" },
new { ID = 4, Name = "DEF" },
new { ID = 5, Name = "EFG" },
new { ID = 6, Name = "FGH" },
new { ID = 7, Name = "GHI" },
new { ID = 8, Name = "HIJ" },
};
rptVerticalWrap.DataBind();
}

int count;
const int VerticalWrapLimit = 5;
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<% count = 0; %>
<div style="float:left;">
<asp:Repeater ID="rptVerticalWrap" runat="server">
<ItemTemplate>
<%
if (count % VerticalWrapLimit == 0 && count > 0)
{
%></div><div style="float:left;"><%
}
count++;
%>
<div>
<asp:Label runat="server" Text="ID: " /><asp:TextBox runat="server" Text='<%# Eval("ID") %>' />
<asp:Label runat="server" Text="Name: " /><asp:TextBox runat="server" Text='<%# Eval("Name") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
</form>
</body>
</html>

对于这类问题,我认为你需要做的是首先确定你希望生成的 HTML 是什么样子,然后编写 ASP 代码来生成它。

在这种情况下,我用 style="float:left;"包装了每个垂直数据列。我使用了类范围的“count”变量来确定何时需要关闭当前的 div 并开始一个新的 div。 count 变量必须是类级变量,因为 Repeater 的 ItemTemplate 的内容与页面的其余部分具有不同的范围。

关于ASP.NET 垂直包装由转发器生成的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com