如何在mvc 4中获取包含数据库中的头数据和来自数据库的行数据的HTML表

时间:2016-03-04 07:21:34

标签: asp.net-mvc-4 razor

我在mvc项目中工作,我想生成一个gridview(html表)。标头应该从db绑定,数据也应该动态地从db绑定。 这是我的元数据或主表。

Id      Name    Label           Value         Emp_id
31      Adhar   DocumentNumber  12345678       1
32      Adhar   ExpiryDate      1/1/2015       1
33      Pan     DocumentNumber  123456789      2
34      Pan     ExpiryDate      1/1/2015       2
36      Pan     IssueLoc        India          2

我的桌子应该如下所示。如果输入参数emp_id为1,则表格应如下所示。这是HTML

<Table><tr><th>DocumentNumber</th><th>ExpiryDate</th><td>12345678       </td>1/1/2015<td></td></tr></table>

OR 这是简单的网页。

DocumentNumber   ExpiryDate
12345678         1/1/2015 

我在mvc4实体框架中工作。如何克服这个?任何人都可以给我一些解决它的想法。我匆匆走过去,一无所获。请给我一些想法。如果问题未清除,请告诉我

这是针对emp_id的2

DocumentNumber   ExpiryDate  IssueLoc
12345678         1/1/2015    India

关于以上数据,我需要以

的形式输出
    Name   DocumentNumber   ExpiryDate
    Adhar  12345678         1/1/2015
    Name   DocumentNumber   ExpiryDate  IssuedLoc
    Pan    123456789        1/1/2015    India

是的,根据我的要求,您提供的答案几乎是正确的。我试着按自己的意愿制作桌子,但是我无法得到它。很抱歉打扰你

2 个答案:

答案 0 :(得分:1)

您需要按Name对数据进行分组,然后为每个组创建一个单独的表。为了简化这一过程,请添加另一个视图模型

public class GroupVM
{
    public string Name { get; set; }
    public IEnumerable<MyItem> Items { get; set; }
}

和控制器方法

public ActionResult Test()
{
    var table = new List<MyItem> {
        new MyItem { Label = "DocumentNumber", Value = "12345678", Emp_id = 1, Name = "First" },
        new MyItem { Label = "ExpiryDate", Value = "1/1/2015", Emp_id = 1, Name = "First" },
        new MyItem { Label = "IssueLoc", Value = "India", Emp_id = 1, Name = "First" },
        new MyItem { Label = "DocumentNumber", Value = "SecondValue", Emp_id = 2, Name = "Second" },
        new MyItem { Label = "ExpiryDate", Value = "SecondValue", Emp_id = 2, Name = "Second" },                
    };
    var data = table.GroupBy(x => x.Name).Select(x => new GroupVM
    {
        Name = x.Key,
        Items = x
    });
    return View(data);
}

然后在视图中

@model IEnumerable<GroupVM>
@foreach(var group in Model)
{
    <table>
        <thead>
            <tr>
                <th>Name</th>
                @foreach(var item in group.Items)
                {
                    <th>@item.Label</th>
                }
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>@group.Name</td>
                @foreach(var item in group.Items)
                {
                    <td>@item.Value</td>
                }
            </tr>
        </tbody>
    </table>
}

参考DotNetFiddle

答案 1 :(得分:0)

如果我理解您的问题,solution将如下所示:

<强>动作:

lists

查看:

currentFolder