我有这样的数据库记录。
我想要显示这样的表格
天数最多为32,默认为1到32.我必须插入 记录天数匹配。
因为我尝试的方法太乱了,也没用。 你们能告诉我一些方法吗? 我需要在HTML表格中显示它。 任何语言都是好的......我只需要这个想法。 最好是MVC C#
更新
谢谢你们两个......我从你们两个人那里得到了想法(无限制和Joe Enos),我做到了。你能帮我解决一个同样的问题吗?如果Area 1
在同一天有另一条2 hours
记录,该怎么办?我需要向他们展示separately
。我将如何在同一天显示记录?
答案 0 :(得分:2)
您希望将数据转换为更有用的数据。一旦你这样做,把它变成行很容易。
为32个插槽中的每个插槽构建一个表示区域的类,该区域包含一组值。在读取数据时,请在数组中填充适当的值,例如:
class Area {
public Area() { Values = new int[32]; }
public int[] Values { get; set; }
public int AreaNumber { get; set; }
}
var areas = new List<Area>();
foreach (var record in databaseRecords) {
var area = // find area from list based on AreaNumber. If not there, add it
area[record.Day - 1] = record.Hour;
}
现在你已经有了一个区域列表,每个区域都有一个32项阵列。现在,您的HTML表可以使用两级循环构建,首先循环遍历所有区域,然后循环遍历数组中的32个项目。
答案 1 :(得分:2)
您可以尝试这样的事情,我没有检查语法的正确性等。
Dictionary<string,int[]> data = new Dictionary<string,int[]>();
foreach (var record in database)
{
if (!data.ContainsKey(record["location"]))
{
int[] days = new int[32];
days[record["day"]] = record["hour"];
data.Add(record["location"], days);
}
else
{
int[] days = data[record["location"]];
days[record["day"]] = record["hour"];
//data[record["location"]] = days;
}
}
变量data
应该以您想要的格式提供数据。然后循环执行此操作并填充html表。
编辑以回应OP的评论
如果每天有多套小时数并且此套装的数量未修复,那么您可以使用类似的内容。
Dictionary<string,ArrayList> day = new Dictionary<string,ArrayList>();
Dictionary<string,day> location = new Dictionary<string,day>();
此day
字典会保存Day 1, Day 2, Day 3, etc...
之类的字符,而值ArrayList
将保留当天的小时数组。
location
字典将保存Area 1, Area 2, etc...
之类的键,值将为day
字典。
也许这会给你一些关于如何解决这个问题的提示。