DataGrid для объединенных таблиц не редактируется - PullRequest
0 голосов
/ 20 октября 2019

Я соединил две таблицы, используя LINQ, чтобы их отношения отображались в EF, но теперь данные, показанные в сетке данных, не редактируются, как я могу сделать это возможным?

Мое выражение соединения:

CMIS_Entities context = new CMIS_Entities();
var query = context.PI_Line.Join(context.PI_Sheet, c => c.idL, x => x.idL, (c, x) => new
{

    Sheet=x.Sh1.ToString() + "/" + c.TotalSheet.ToString(),
    Sh1=x.Sh1,
    idS=x.idS,
    idL=c.idL,
    IsoLine=x.Line3,
    SheetValidity=x.SheetValidity,
    Pos=c.Pos,
    Zone=c.Zone,
    Line=c.Line,
    WellHead=c.WellHead,
    Validity=c.RevValid
}).ToList();

Line_Grid.ItemsSource = query;

1 Ответ

0 голосов
/ 26 октября 2019

DataGrid создает столбцы для каждого свойства элементов в ItemsSource. Столбцы доступны для редактирования, если свойство имеет установщик public. В этом случае ItemsSource состоит из анонимных объектов, которые являются неизменяемыми, поэтому DataGrid доступен только для чтения

Создайте именованный класс с необходимыми свойствами и преобразуйте результаты запроса в экземпляры этого класса:

public class DataItem 
{
   public string Sheet { get; set; }
   ...
   public bool Validity { get; set; }
}

CMIS_Entities context = new CMIS_Entities();
var results = context.PI_Line.Join(context.PI_Sheet, c => c.idL, x => x.idL, (c, x) => new DataItem
{

    Sheet=x.Sh1.ToString() + "/" + c.TotalSheet.ToString(),
    Sh1=x.Sh1,
    idS=x.idS,
    idL=c.idL,
    IsoLine=x.Line3,
    SheetValidity=x.SheetValidity,
    Pos=c.Pos,
    Zone=c.Zone,
    Line=c.Line,
    WellHead=c.WellHead,
    Validity=c.RevValid
}).ToList();

Line_Grid.ItemsSource = results;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...