如何从由多个表填充的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;
谢谢。
我终于得到了答案
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;
我希望这是有用的。