繁体   English   中英

ASPX中的GridView格式

[英]GridView Formatting in aspx

我在数据库中有一个表,我想以不同的方式在前端显示它。 但是我没有得到任何帮助来管理它并显示不同的方式。

数据库表是:

Id  Month  Commodity  Amount
----------------------------
1   May     wheat      100
2   May     rice       200
3   June    wheat      400
4   July    maize      100

my result :

 Id  Month  Commodity  Amount
----------------------------
1   May     wheat      100
2   May     rice       200
3   June    wheat      400
4   July    maize      100

但是我想用以下格式的gridview显示数据:

  Month      wheat    rice    maize
  --------------------------------
  May        100      200     
  June       400
  July                        100

我的aspx代码:

<asp:GridView ID="grdData" runat="server">
</asp:GridView>

和aspx.cs代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            getdata();
        }
    }

    public void getdata()
    {
        using (GridFormatEntities context = new GridFormatEntities())
        {
            var result = (from r in context.tbl_Commodity
                          select new
                          {
                              Id=r.Id,
                              Month = r.Month,
                              Commodity = r.Commodity,
                              Amount = r.Amount
                          }).ToList();
            grdData.DataSource = result;
            grdData.DataBind();

        }
    }

您想要的是数据透视表或数据透视表。 我不知道英语是哪个技术核心术语。 但是关于您的问题,这与格式化Gridview无关,因为在将数据绑定到Gridview之前,您首先需要进行一些数据聚合。

我将您的基本查询结果作为演示的起点,然后应用了数据透视表:

void Main()
{
    var list = new List<CustomObject>() 
    {
        new CustomObject() {Id = 1, Month ="May", Commodity ="Wheat", Amount = 100},
        new CustomObject() {Id = 2, Month ="May", Commodity ="Rice", Amount = 200},
        new CustomObject() {Id = 3, Month ="June", Commodity ="Wheat", Amount = 400},
        new CustomObject() {Id = 4, Month ="July", Commodity ="Maize", Amount = 100},
        new CustomObject() {Id = 5, Month ="August", Commodity ="Raspberry", Amount = 666},
    };

    var result = list.GroupBy (l => l.Month)
                     .Select (l => new {
                        Month = l.Key,
                        Wheat = l.Where(x => x.Commodity == "Wheat").Sum (x => x.Amount),
                        Rice = l.Where(x => x.Commodity == "Rice").Sum (x => x.Amount),
                        Maize = l.Where(x => x.Commodity == "Maize").Sum (x => x.Amount),
                        Raspberry = l.Where(x => x.Commodity == "Raspberry").Sum (x => x.Amount),
                     });

    result.Dump();
}

// Define other methods and classes here
class CustomObject
{
    public int Id { get; set; }
    public string Month { get; set; }
    public string Commodity { get; set; }
    public int Amount { get; set; }
}

输出:

在此处输入图片说明

如果您使用的是LinqPad,则可以在此处下载整个查询脚本: http ://share.linqpad.net/fqsodb.linq

/ EDIT:总而言之,您的查询应如下所示:

using (GridFormatEntities context = new GridFormatEntities())
{
   var result = (from r in context.tbl_Commodity
                 select new
                 {
                     Id=r.Id,
                     Month = r.Month,
                     Commodity = r.Commodity,
                     Amount = r.Amount
                 })
                 .GroupBy (r => r.Month)
                 .Select (r => new {
                    Month = r.Key,
                    Wheat = r.Where(x => x.Commodity == "Rice").Sum (x => x.Amount),
                    Rice = r.Where(x => x.Commodity == "Rice").Sum (x => x.Amount),
                    Maize = r.Where(x => x.Commodity == "Maize").Sum (x => x.Amount),
                 }).ToList();
   grdData.DataSource = result;
   grdData.DataBind();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM