【问题标题】:Formatting data inside WPF DataGrid在 WPF DataGrid 中格式化数据
【发布时间】:2020-03-17 13:36:17
【问题描述】:

我正在尝试在 wpf DataGrid 控件中格式化我的单元格,但我遇到了问题。

我正在上课:

class WashItem
{
    private DateTime _Time = DateTime.Now;
    private string _Staff = "Undefined";
    private double _Price = 850;

    public string Staff { get => _Staff; set => _Staff = value; }
    public DateTime Time { get => _Time; set => _Time = value; }
    public double Price { get => _Price; set => _Price = value; }
}

我正在像这样填充我的数据网格

private void ReloadData()
{
    string[] lines = File.ReadAllLines("baza.txt");
    double ukupnaVrednost = 0;

    DataTable table = new DataTable();
    DataColumn col1 = new DataColumn("Osoblje");
    DataColumn col2 = new DataColumn("Vreme");
    DataColumn col3 = new DataColumn("Cena");

    table.Columns.Add(col1);
    table.Columns.Add(col3);
    table.Columns.Add(col2);

    for (int i = 0; i < lines.Length; i++)
    {
        WashItem item = JsonConvert.DeserializeObject<WashItem>(lines[i]);

        DataRow row = table.NewRow();
        row["Osoblje"] = item.Staff;
        row["Vreme"] = item.Time;
        row["Cena"] = item.Price;
        table.Rows.Add(row);
        ukupnaVrednost += item.Price;
    }

    dataGridView.ItemsSource = table.AsDataView();

    UkupnoOprano.Content = "Ukupno oprano vozila: " + lines.Length;
    UkupnoOpranoVrednost.Content = "Vrednost: " + ukupnaVrednost.ToString("#,##0.00");
}

然后我创建了这样的数据网格

<DataGrid Name="dataGridView" AutoGenerateColumns="true" AutoGeneratingColumn="dataGridView_AutoGeneratingColumn"></DataGrid>

最后这是我的dataGridView_AutoGeneratingColumn 函数

private void dataGridView_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if(e.PropertyName == "Cena")
    {
        ((DataGridTextColumn)e.Column).Binding.StringFormat = "#,##0.00 rsd";
    }
    else if(e.PropertyName == "Vreme")
    {
        ((DataGridTextColumn)e.Column).Binding.StringFormat = "dd/MM/yyyy";
    }
}

自动生成列函数 get 被触发,它确实进入了 if 块,但最后我的数据仍然相同 - 未格式化。

【问题讨论】:

    标签: c# wpf datatable datagrid


    【解决方案1】:

    我会说您需要为 DataColumns 设置 DataType,因为所需的格式特定于这些类型,并且不适用于 object 类型。

    DataTable table = new DataTable
    {
        Columns = 
        {
             new DataColumn("Osoblje"),
             new DataColumn("Vreme", typeof(DateTime)),
             new DataColumn("Cena", typeof(double))
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-06
      • 2011-10-08
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多