简体   繁体   English

ASPX中的GridView格式

[英]GridView Formatting in aspx

I have a table in Database and I want to show this on front end with different way. 我在数据库中有一个表,我想以不同的方式在前端显示它。 but i didn't get any help to manage this and show different Way. 但是我没有得到任何帮助来管理它并显示不同的方式。

Database table Is : 数据库表是:

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

But I want to display data with gridview in below format: 但是我想用以下格式的gridview显示数据:

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

My aspx code: 我的aspx代码:

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

and aspx.cs code 和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();

        }
    }

What you want is to pivot your data, or a pivot table. 您想要的是数据透视表或数据透视表。 I don't know which is the technical corect term in English. 我不知道英语是哪个技术核心术语。 But as to your question, this has nothing to do with formatting your gridview, since you frist need to do some data aggregation, before you bind the data to your Gridview. 但是关于您的问题,这与格式化Gridview无关,因为在将数据绑定到Gridview之前,您首先需要进行一些数据聚合。

I have taken your basic query result as the starting point for my demonstration and then applied the pivot: 我将您的基本查询结果作为演示的起点,然后应用了数据透视表:

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; }
}

Output: 输出:

在此处输入图片说明

If you are using LinqPad, you can download the whole query script here: http://share.linqpad.net/fqsodb.linq 如果您使用的是LinqPad,则可以在此处下载整个查询脚本: http ://share.linqpad.net/fqsodb.linq

/EDIT: All in all, your query should look like this: / 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