【问题标题】:Populating datagrid from selected items in a combobox C# WPF从组合框中的选定项目填充数据网格 C# WPF
【发布时间】:2015-07-30 01:46:40
【问题描述】:

我正在尝试将 ComboBox 中的数据插入 DataGrid

现在使用下面的代码 sn-p,我已经可以在我的数据网格中插入一行,但由于某种原因,该行显示为完全空。

private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    using (DataEntities DE = new DataEntities())
    {
        tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
        List<string> items = new List<string> { E.ItemCode };

        items.Where(item => item.ToString() != null).ToList().ForEach(i =>
        {
            dgAddExtras.Items.Add(i);
        });
    }
}

我也尝试通过 XAML 绑定我的列,但问题相同,它仍然在我的数据网格中显示一个空行。

    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding ItemID}" Header="id" MinWidth="20" MaxWidth="100"/>
        <DataGridTextColumn Binding="{Binding ItemCode}" Header="Code" MinWidth="80" MaxWidth="100"/>
        <DataGridTextColumn Binding="{Binding ItemDescription}" Header="Description" MinWidth="80" MaxWidth="100"/>
        <DataGridTextColumn Binding="{Binding ItemPrice}" Header="Price" MinWidth="80" MaxWidth="100"/>
        <DataGridTextColumn Binding="{Binding ItemSellingPrice}" Header="QTY" MinWidth="80" MaxWidth="100"/>
    </DataGrid.Columns>

我给班级提供的列名与我表中的列名完全相同,以防万一有人想知道。

我不知道它为什么这样做。我可能错过了一些非常简单的事情,如果是这样,对不起:P并提前感谢您的帮助!

【问题讨论】:

    标签: c# wpf xaml datagrid combobox


    【解决方案1】:

    你的代码错了:

    在下面的行中,您只是在 List 'items' 中添加了一个 string

    List<string> items = new List<string> { E.ItemCode.ToString() };
    

    那么你怎么能期望一个字符串包含你在DataGrid 列中引用的所有这些属性?

    这样写:

    private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        using (DataEntities DE = new DataEntities())
        {
            tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
            List<tblExtra> items = new List<tblExtra> { E };
    
            items.Where(item => item != null).ToList().ForEach(i =>
            {
                dgAddExtras.Items.Add(i);
            });
        }
    }
    

    【讨论】:

    • 嗨尼丁!感谢您的评论。我像你说的那样改变了它List&lt;string&gt; items = new List&lt;string&gt; { E }; 但是“E”在哪里给了我这个错误集合的最佳重载添加方法'System.Collections.Generic.List.Add(string)'初始化程序有一些无效参数。我还在 E 中添加了 ToString,但数据网格仍然显示空行?
    • 哦,是的,创建 List&lt;tblExtra&gt; 而不是 List&lt;string&gt;,然后将 E 添加到该列表中。
    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多