[英]C# UWP - CSV in Datagrid
I have been attempting to migrate my program from winForms to UWP as a learning exercise;我一直在尝试将我的程序从 winForms 迁移到 UWP 作为学习练习; I am new to C#.
我是 C# 的新手。
In my winForms code I used:在我使用的 winForms 代码中:
private void BindData(string filePath)
{
DataTable dt = new DataTable();
string[] lines = File.ReadAllLines(filePath);
if (lines.Length > 0)
{
//first line to create header
globals.count = lines.Length;
string firstLine = lines[0];
string[] headerLabels = firstLine.Split(',');
foreach (string headerWord in headerLabels)
{
dt.Columns.Add(new DataColumn(headerWord));
}
//For Data
for (int i = 1; i < 100; i++)
{
string[] dataWords = lines[i].Split(',');
DataRow dr = dt.NewRow();
int columnIndex = 0;
foreach (string headerWord in headerLabels)
{
dr[headerWord] = dataWords[columnIndex++];
}
dt.Rows.Add(dr);
}
}
}
How can I replicate this.我怎样才能复制这个。 I have attempted following this guide and this guide
我已尝试遵循本指南和本指南
UWP - CSV in Datagrid
数据网格中的 UWP - CSV
For loading csv data and display into DataGrid control, you could refer my previous case reply that load the csv file and parse into DataGrid ItemResource
.要加载 csv 数据并显示到 DataGrid 控件中,您可以参考我之前的案例回复,即加载 csv 文件并解析为 DataGrid
ItemResource
。 That reply contain the complete xaml and code behind.该回复包含完整的 xaml 和后面的代码。 Please note the csv file stored in the project folder.
请注意存储在项目文件夹中的 csv 文件。 if the file stored in other location within your scenario, we suggest use
FileOpenPicker
to access the csv file.如果文件存储在您场景中的其他位置,我们建议使用
FileOpenPicker
访问 csv 文件。
Xaml Code Xaml 代码
<controls:DataGrid
x:Name="MyDataGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AlternatingRowBackground="Transparent"
AlternatingRowForeground="Gray"
AreRowDetailsFrozen="False"
AreRowGroupHeadersFrozen="True"
AutoGenerateColumns="False"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="False"
ColumnHeaderHeight="32"
FrozenColumnCount="0"
GridLinesVisibility="None"
HeadersVisibility="Column"
HorizontalScrollBarVisibility="Visible"
IsReadOnly="False"
Loaded="DataGrid_Loaded"
MaxColumnWidth="400"
RowDetailsVisibilityMode="Collapsed"
RowGroupHeaderPropertyNameAlternative="Range"
SelectionMode="Extended"
VerticalScrollBarVisibility="Visible"
>
<controls:DataGrid.RowGroupHeaderStyles>
<Style TargetType="controls:DataGridRowGroupHeader">
<Setter Property="Background" Value="LightGray" />
</Style>
</controls:DataGrid.RowGroupHeaderStyles>
<controls:DataGrid.Columns>
<controls:DataGridTextColumn
Binding="{Binding Id}"
Header="Id"
Tag="Id"
/>
<controls:DataGridTextColumn
Binding="{Binding Title}"
Header="Title"
Tag="Title"
/>
<controls:DataGridComboBoxColumn
Binding="{Binding Link}"
Header="Link"
Tag="Link"
/>
<controls:DataGridTextColumn
Binding="{Binding Type}"
Header="Type"
Tag="Type"
/>
<controls:DataGridTextColumn
Binding="{Binding Remark}"
Header="Remark"
Tag="Remark"
/>
<controls:DataGridTextColumn
Binding="{Binding Time}"
Header="Time"
Tag="Time"
/>
</controls:DataGrid.Columns>
</controls:DataGrid>
Model class Model class
public class Item
{
public string Id { get; set; }
public string Title { get; set; }
public string Link { get; set; }
public string Type { get; set; }
public string Remark { get; set; }
public string Time { get; set; }
}
**Data Process**
private ObservableCollection<Item> Items;
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
using (var reader = new StreamReader("Assets\\Archive.csv",true))
using (var csv = new CsvReader(reader))
{
var records = csv.GetRecords<Item>();
Items = new ObservableCollection<Item>(records);
}
MyDataGrid.ItemsSource = Items;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.