1

我有这样的数据库记录。

我的记录

我想展示这样的表格 要显示喜欢的表格

天数最多为 32,默认为 1 到 32。我必须在天数匹配的地方插入记录。

因为我尝试的方法太乱了,也不起作用。你们能建议我一些方法吗?我需要在 HTML 表格中显示它。任何语言都很好..我只需要这个想法。最好是 MVC C#

更新 谢谢你们……我从你们俩(unlimit和Joe Enos)那里得到了想法,我做到了。你能再帮我解决一个同样的问题吗?如果在同一天Area 1有另一个记录怎么办。2 hours我需要给他们看separately。我将如何在同一天显示记录?

在此处输入图像描述

4

2 回答 2

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 个项目。

于 2013-10-29T07:27:36.930 回答
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字典。

也许这会给你一些关于如何解决这个问题的提示。

于 2013-10-29T08:48:03.747 回答