简体   繁体   English

数据网格中的 C# UWP - CSV

[英]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.

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