如何从由多个表填充的DataGrid中获取特定单元格的数据

本文关键字:DataGrid 获取 数据 单元格 填充 | 更新日期: 2023-09-27 18:04:25

我有一个DataGrid,由多个表由实体框架由这个代码填充:

var Qselect = (from w in db.Workshops
                           join wt in db.WorkshopTypes on w.WorkshopTypeId equals wt.WorkshopTypeId
                           join tt in db.TransferTypes on w.WorkshopTransfer equals tt.TransferTypeId
                           where w.WorkshopDate.Contains("1395/05/01")
                           orderby w.WorkshopDate
                           select new
                           {
                               WorkshopId = w.WorkshopId,
                               WorkshopDate = w.WorkshopDate,
                               WorkshopTypeId = wt.WorkshopTypeName,
                               WorkshopDetails = w.WorkshopDetails,
                               FusionId = w.FusionId,
                               WorkshopTransfer = tt.TransferTypeName,
                               WorkshopWeight = w.WorkshopWeight
                           }).Take(10);
            grdWorkshop.ItemsSource = Qselect.ToList();

和i创建我的DataGrid通过这个代码

<DataGrid x:Name="grdWorkshop" AutoGenerateColumns="False" >
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="id" Width="50" Binding="{Binding WorkshopId}" />
                                <DataGridTextColumn Header="Date" Width="140" Binding="{Binding WorkshopDate }"/>
                                <DataGridTextColumn Header="Type" Width="110" Binding="{Binding WorkshopTypeId }"/>
                                <DataGridTextColumn Header="Detail" Width="220" Binding="{Binding WorkshopDetails }"/>
                                <DataGridTextColumn Header="Series" Width="80" Binding="{Binding FusionId }"/>
                                <DataGridTextColumn Header="Transfer" Width="130" Binding="{Binding WorkshopTransfer }"/>
                                <DataGridTextColumn Header="Weight" Width="100" Binding="{Binding WorkshopWeight }"/>
                            </DataGrid.Columns>
                            <DataGrid.ContextMenu>
                                <ContextMenu >
                                    <MenuItem Header="Add" Click="AddWorkshopItem" />
                                    <MenuItem Header="Edit" Click="EditWorkshopItem" />
                                    <MenuItem Header="Delete" Click="DeleteWorkshopItem" />
                                </ContextMenu>
                            </DataGrid.ContextMenu>
                        </DataGrid>

现在我想通过上下文菜单编辑或删除我的行,然后通过存储过程执行此操作。现在我想获得数据网格中所选行的id来删除或编辑行。我怎么能得到这个??我正在使用实体框架和全行选择单元。

我看到这个代码和工作。但在我的项目中不起作用。我认为这是因为我连接了多个表。

int id = (grdWorkshop.SelectedItem as Workshop).WorkshopId;

谢谢。

如何从由多个表填充的DataGrid中获取特定单元格的数据

我终于得到了答案

class CWorkshop
{
    public decimal? WorkshopWeight { get; set; }
    public int WorkshopId { get; set; }
    public string WorkshopDate { get; set; }
    public string WorkshopTypeId { get; set; }
    public string WorkshopDetails { get; set; }
    public int? FusionId { get; set; }
    public string WorkshopTransfer { get; set; }
}

我通过这个类改变了我的查询,像这样。当然是完全私有的变量和属性。

var Qselect = (from w in db.Workshops
                               join wt in db.WorkshopTypes on w.WorkshopTypeId equals wt.WorkshopTypeId
                               join tt in db.TransferTypes on w.WorkshopTransfer equals tt.TransferTypeId
                               where w.WorkshopDate.Contains("1395/05/01")
                               orderby w.WorkshopDate
                               select new CWorkshop()
                               {
                                   WorkshopId = w.WorkshopId,
                                   WorkshopDate = w.WorkshopDate,
                                   WorkshopTypeId = wt.WorkshopTypeName,
                                   WorkshopDetails = w.WorkshopDetails,
                                   FusionId = w.FusionId,
                                   WorkshopTransfer = tt.TransferTypeName,
                                   WorkshopWeight = w.WorkshopWeight
                               }).Take(10);

然后通过此代码获取我的数据。这太容易了

int id = (grdWorkshop.SelectedItem as CWorkshop).WorkshopId;
我希望这是有用的。