簡體   English   中英

數據網格中的 C# UWP - CSV

[英]C# UWP - CSV in Datagrid

我一直在嘗試將我的程序從 winForms 遷移到 UWP 作為學習練習; 我是 C# 的新手。

在我使用的 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);
                }
          }
    }

我怎樣才能復制這個。 我已嘗試遵循本指南本指南

數據網格中的 UWP - CSV

要加載 csv 數據並顯示到 DataGrid 控件中,您可以參考我之前的案例回復,即加載 csv 文件並解析為 DataGrid ItemResource 該回復包含完整的 xaml 和后面的代碼。 請注意存儲在項目文件夾中的 csv 文件。 如果文件存儲在您場景中的其他位置,我們建議使用FileOpenPicker訪問 csv 文件。

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

    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