gpt4 book ai didi

wpf - Datagrid将wpf c#绑定(bind)到datatable.defaultview : Last column of data missing but header is there

转载 作者:行者123 更新时间:2023-12-04 04:37:04 27 4
gpt4 key购买 nike

我在 net 4 wpf c# 项目中绑定(bind)数据网格控件时遇到问题
抱歉,如果我发布的信息太多或不够,我永远猜不到正确的数量

这就是我所拥有的。

1.一个名为 dgCSVData 的数据网格控件,它勾选了自动生成列

我的xml是

<DataGrid ItemsSource="{Binding dgCSVData}" Name="dgCSVData" Height="283" Width="1033" IsEnabled="True" ContextMenuService.ShowOnDisabled="True" IsReadOnly="True" SelectionChanged="dgCSVData_SelectionChanged" >
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Command="Copy">
<!--<MenuItem.Icon>
<Image Source="Images/copy.png" />
</MenuItem.Icon>-->
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>
  • 我正在将一个 csv 读入一个列表并使用该列表创建一个从我的 sql 数据库克隆的数据表。数据表在后台阅读器中创建并交回主线程。我循环浏览了表数据行中的项目,并确认数据表返回了正确的信息:这是调试输出的表中的一行

  • Year Item: 2013/14,From Item: 12/10/2013 00:00:00,To Item: 18/10/2013 00:00:00,Week No Item: 27,Clock No Item: 1139,Name Item: SINGH,Initial Item: R,Dept Item: 1,Own Hours Item: 55.50,Other Hours Item: 0.00,Total Hours Item: 55.50,O/T Premium Item: 7.92



    我使用此代码设置(或者更确切地说尝试)设置数据网格的内容
    void objProgress_ValueChanged(DataTable Result,string msg)
    {
    //Handle the event of csv datatable ready to return
    oTable = Result;

    //this is just for debug
    DataRow Dr = oTable.Rows[0];
    foreach (var item in Dr.ItemArray)
    {
    System.Windows.Forms.MessageBox.Show(item.ToString());
    }

    //this meant to set the binding BUT DOES NOT WORK TOTALLY LAST COLUMN MISSING
    this.dgCSVData.DataContext = oTable.DefaultView;
    this.dgCSVData.ItemsSource = oTable.DefaultView;
    tbLoadDgStat.Visibility = Visibility.Visible;

    //This does some error checking
    if (oTable.Rows.Count > 1)
    {
    if (msg.Trim().StartsWith("Warning"))
    {
    System.Windows.Media.Color c = Colors.Red;

    this.tbLoadDgStat.Background = new SolidColorBrush(c);
    System.Windows.Forms.MessageBox.Show(oTable.Rows.Count.ToString());
    }

    this.tbLoadDgStat.Text = msg;
    progressBar1.Value = 100;

    btUpload.IsEnabled = true;
    }
    else
    {
    this.tbdgImport.Text = "Error no data returned";
    progressBar1.Value = 50;
    }

    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;

    progressBar1.Visibility = Visibility.Hidden;
    this.Show();
    }

    我收到的错误是

    System.Windows.Data Error: 40 : BindingExpression path error: 'O' property not found on 'object' ''DataRowView' (HashCode=30297615)'. BindingExpression :Path=O/T Premium; DataItem='DataRowView' (HashCode=30297615) ; target element is 'TextBlock' (Name='') ; target property is 'Text' (type 'String')



    路径 O/T Premium 是数据表和数据网格的最后一列。
    它应该来自值 上方的行O/T 高级项目:7.92 从数据表中这是一个小数,但正确绑定(bind)的前四个项目也是如此

    我正在尝试使绑定(bind)​​尽可能通用,因为我希望在下一阶段的开发中将不同的 csv 文件读入数据网格

    我不明白绑定(bind)问题,因为数据表中的所有其他项目都正确显示并由两行代码完成
     this.dgCSVData.DataContext = oTable.DefaultView;
    this.dgCSVData.ItemsSource = oTable.DefaultView;

    最佳答案

    您不能使用 ' / ' 您的 Binding.Path 中的字符...您可以看到错误表示找不到 O属性,因为 ' / ' 表示 Binding 中的某些内容路径语法。删除 ' /'列中的字符将解决您的问题。

    你可以找到更多关于Binding.Path来自 Binding.Path Property 的语法MSDN 上的页面。从链接页面:

    When the source is a collection view, the current item can be specified with a slash (/). For example, the clause Path=/ sets the binding to the current item in the view. When the source is a collection, this syntax specifies the current item of the default collection view.

    关于wpf - Datagrid将wpf c#绑定(bind)到datatable.defaultview : Last column of data missing but header is there,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570567/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com