【问题标题】:Populate a Datagrid with a Linq query使用 Linq 查询填充 Datagrid
【发布时间】:2012-08-14 18:58:16
【问题描述】:

我有以下 wpf 形式的数据网格:

<DataGrid Name="DataGrid" AutoGenerateColumns="False" VerticalScrollBarVisibility="Auto">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Width="200"></DataGridTextColumn>
        <DataGridTextColumn Header="Text" Width="200"></DataGridTextColumn>
        <DataGridTemplateColumn Header="Edit" Width="50">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button>View Details</Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

我想从我的代码中填充它。我使用 linq 语句来获取我想放入数据网格的值

var query =
    (
        from modules ...
        join ...
        join ...
        where ...
        select new { ID = modules.ID, Name = strings.Name, Text = stringTexts.Text }
    );

我想用查询中的名称和文本填充“名称”和“文本”列,但我还希望每一行都有一个按钮,当按下该按钮时,我必须知道被按下的行的 ID,但 ID 不必显示在网格上。

如何使用这些值填充网格?

【问题讨论】:

  • 你试过了吗?只需设置DataGrid.DataSource = query; DataGrid.DataBind(); 并查看它是否有效。按钮是第二步

标签: c# .net wpf linq datagrid


【解决方案1】:

告诉列绑定到属性使用

<DataGridTextColumn Header="Name" Width="200" Binding="{Binding Name}" />

其他列以此类推。

然后在代码后面

DataGrid.ItemsSource = query;

【讨论】:

  • 好的!但是我如何传递 ID 呢?我必须将其设为隐藏列吗?
  • @ProgrammerAtWorkL: 简单&lt;DataGridTextColumn Header="Id" Width="200" Binding="{Binding Id}" Visibility="Collapsed" /&gt;
【解决方案2】:

这应该适合你:

Grid.DataSource = from x in modules
                  select new
                  {
                      x.Name,
                      x.Text
                  };
Grid.DataBind();

祝你好运!

【讨论】:

    猜你喜欢
    • 2016-07-06
    • 2012-01-04
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多