【问题标题】:.net dataset grid- rearranging the table columns dynamically.net dataset grid-动态重新排列表格列
【发布时间】:2014-09-03 15:33:31
【问题描述】:

我有一个使用 gridview 在 aspx 页面上填充的数据集。 我希望很少的行动态地作为列出现。 例如:我希望所有的基金数字都以列(动态)的形式出现,并在这些列的值中显示工资百分比的总和。通用名称的年费率也被汇总并显示为一个条目。

我的实际数据

LastName  FirstName AnnualRate FundNumber  PercentSalary

AAA        AAA1      50000      201156      12

AAA        AAA1      40000      201156      6

BBB        BBB1      40000      201158      15

BBB        BBB1      40000      201160      20

我想变成这样:

LastName  FirstName AnnualRate  201156     201158 201160

AAA       AAA1      90000        18%         0%     0%

BBB       BBB1      80000        0%          15%    20%

请帮忙!!

【问题讨论】:

  • 正确格式化问题真的很有帮助
  • 在我的实际数据中,我有一个名为“基金编号”的列,所有基金编号都列在其中。 201156、201158、201160。这些可能会增加或改变。我希望它们在我显示到所需数据中时动态显示为列名。我们该怎么做?
  • 你从数据库中得到这些数据?
  • 我的数据集中有这个
  • 检查我的答案我已将其更改为使用数据表

标签: c# asp.net gridview dataset


【解决方案1】:

按照步骤进行操作。 假设您有包含数据的数据表

DataTable ddt = getData();//dtt is your table from data set.

第1步:将表格转换为列表并过滤我们需要的一些信息

List<DataRow> data = ddt.AsEnumerable().ToList();
        var names = data.GroupBy(a => a["FirstName"]);//get names
        var fn = data.GroupBy(a => a["FundNumber"]);//get the FundNumbers

第 2 步:创建一个包含所需列的新 DataTable。

DataTable tbl = new DataTable();
        tbl.Columns.Add("LastName", typeof(string));
        tbl.Columns.Add("FirstName", typeof(string));
        tbl.Columns.Add("AnnualRate", typeof(string));
        foreach (var item in fn)
        {
            tbl.Columns.Add(item.Key.ToString(),typeof(string));
        }

第 3 步:现在将数据添加到表中

foreach (var item in names)
        {
            List<DataRow> specificData = data.Where(d => d["FirstName"] == item.Key).ToList();
            DataRow newRow = tbl.NewRow();
            newRow["LastName"] = specificData[0]["LastName"];
            newRow["FirstName"] = item.Key;
            newRow["AnnualRate"] = specificData.Sum(s =>(int) s["AnnualRate"]);
            foreach (var val in fn)
            {
                newRow[val.Key.ToString()] = specificData.Where(s => s["FundNumber"] == val.Key).Sum(s => (int)s["PercentSalary"]) + "%";
            }

            tbl.Rows.Add(newRow);
        }

最后将数据绑定到您的网格。

GridView1.DataSource = tbl;
        GridView1.DataBind();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2020-11-18
    • 2020-12-06
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多