【问题标题】:Is there a way to populate a DataGridComboBoxColumn in a DataGrid from a DataTable?有没有办法从 DataTable 填充 DataGrid 中的 DataGridComboBoxColumn?
【发布时间】:2019-11-27 09:51:47
【问题描述】:

我认为我要问的问题类似于How to populate a DataGridComboBoxColumn?,但我的问题来自 DataTable 而不是类。我创建了一个数据集作为示例。但基本上,当我加载它时,该列是空白的,但是当我从组合框中选择一个项目时,它仍然按预期编辑数据表,但我认为我缺少将数据绑定到列的东西。

        DataTable dt;
        public MainWindow()
        {
            InitializeComponent();
            CreateDT();
        }

        public void CreateDT()
        {
            dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Position", typeof(string));
            // List for the options in the comboBox
            List<string> list = new List<string>()
            {
                "Position 1",
                "Position 2",
                "Position 3",
                "Position 4",
                "Position 5"
            };
            // datatable
            for (int i = 0; i < 10; i++)
            {
                dt.Rows.Add("Person A", "Position A");
            }
            ComboBoxColumn.ItemsSource = list;
            RestoreTable.ItemsSource = dt.DefaultView;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Adding a break point here so I can debug what the datatable looks like after selecting a value
        } 

使用 XAML

    <Grid>
        <DataGrid Name="RestoreTable" AutoGenerateColumns="False" HorizontalAlignment="Center" VerticalAlignment="Top" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <DataGridComboBoxColumn x:Name="ComboBoxColumn" 
                                        Header="Position" 
                                        SelectedItemBinding="{Binding List}" 
                                        SelectedValueBinding="{Binding Position}"
                                        ???????/>
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Button" HorizontalAlignment="Left" Margin="703,352,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    </Grid>

【问题讨论】:

    标签: c# wpf xaml datagridcomboboxcolumn


    【解决方案1】:

    问题是因为 DataTable 中的值不在 DataGridComboBoxColumn 列表中,所以没有显示,将“位置 A”添加到列表或将“位置 A”更改为“位置 1”可以解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-10
      • 2014-08-05
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      相关资源
      最近更新 更多