1
我有CSV文件是這樣的:如何將列值設置爲GridView列?
我需要顯示與GridView控件這個csv文件。但是,我必須改變格式是這樣的:
我必須選擇不同的只是日期和安裝在GridView的列柱和使用日期值。
如何爲Gridview列使用csv文件的值?
我有CSV文件是這樣的:如何將列值設置爲GridView列?
我需要顯示與GridView控件這個csv文件。但是,我必須改變格式是這樣的:
我必須選擇不同的只是日期和安裝在GridView的列柱和使用日期值。
如何爲Gridview列使用csv文件的值?
假設讀取CSV文件不是問題,並且您已經有類似List<ClassName>
,DataTable
或List<string[]>
的東西。我假定這是一個List<String[]>
,其中第一個「列」是Date
,第二個Mount
和最後一個%
在我的以下方法。
你需要真實DateTime
S和int
s到能夠按日期總結百分比:
var formatProvider = new CultureInfo("de-DE"); // seems to be the correct format
var mountGroups = listOfStringArray
.Select(arr => new
{
Date = DateTime.Parse(arr[0].Trim(), formatProvider).Date,
Mount = arr[1].Trim(),
Percent = int.Parse(arr[2].Trim())
})
.GroupBy(x => x.Mount);
現在你已經通過Mount
分組,你只需要總結的百分比的每一天。您可以使用DataTable
作爲GridView
的數據源。這裏是與每天的動態列創建表的代碼:
var dataSource = new DataTable();
dataSource.Columns.Add("Mount");
var lastWeekColumns = Enumerable.Range(0, 7)
.Select(d => new DataColumn(DateTime.Today.AddDays(-6 + d).ToShortDateString(), typeof(int)))
.ToArray();
dataSource.Columns.AddRange(lastWeekColumns);
以下循環執行LINQ查詢和填充表:
foreach(var grp in mountGroups)
{
DataRow row = dataSource.Rows.Add();
row.SetField("Mount", grp.Key); // because: GroupBy(x => x.Mount);
foreach(DataColumn dayCol in lastWeekColumns)
{
DateTime day = DateTime.Parse(dayCol.ColumnName, formatProvider);
int sumPercent = grp.Where(x => x.Date == day)
.Select(x => x.Percent)
.DefaultIfEmpty(0) // fallback value for missing days
.Sum();
row.SetField(dayCol, sumPercent);
}
}
現在,你只需要使用它作爲數據源(AuthoGenerateColumns
設置爲true
)
grid.DataSource = dataSource;
grid.DataBind();
如何讀取CSV文件?是你的問題的一部分,還是你已經像'List'或'DataTable'或者'List '這樣的東西? –
我使用'Sqldatasource'和'Odbc'沒有代碼。 – phe
所以你想要一些樞軸,行到列?這些日子是否已知? –