Помогите изменить сетку данных с базой данных XAML - PullRequest
2 голосов
/ 02 мая 2011

У меня есть следующий код XAML:

    <sdk:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" ItemsSource="{Binding ElementName=ticketDomainDataSource, Path=Data}" Margin="8,43,0,0" Name="ticketDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="795">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn x:Name="ticketNameColumn" Binding="{Binding Path=ticketName}" Header="Ticket Name" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="ticketDescColumn" Binding="{Binding Path=ticketDesc}" Header="Ticket Desc" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="ticketNumberColumn" Binding="{Binding Path=ticketNumber}" Header="Ticket Number" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="ticketTypeIdColumn" Binding="{Binding Path=ticketTypeId}" Header="Ticket Type Id" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="seatIdColumn" Binding="{Binding Path=seatId}" Header="Seat Id" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="showIdColumn" Binding="{Binding Path=showId}" Header="Show Id" Width="SizeToHeader" />
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>

В коде есть определенные заголовки, такие как seatId и showId, я хотел бы, чтобы они отображали фактическое имя места и show, но, как бы я это сделал, я использую доменные службы и контексты в своем приложении Silverlight. 1004 *

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Спасибо.

EDIT: Запрос, используемый для привязки:

EntityQuery<Web.Ticket> query =
               from t in _ticketContext.GetTicketsQuery()
               where t.bookingId == data.bookingId
               select t;
        LoadOperation<Web.Ticket> loadOp = _ticketContext.Load(query);
        tk.ticketDataGrid.ItemsSource = loadOp.Entities;

EDIT: Модель данных:

enter image description here

EDIT: Код запроса от службы домена:

    public IQueryable<Ticket> GetTickets()
    {
        return this.ObjectContext.Tickets.Include("Seat");
    }

1 Ответ

1 голос
/ 02 мая 2011

Чтобы дать вам полный ответ ...

Вот ссылка на SO, которая описывает свойства навигации

Если у вас есть объект Tickets с идентификатором SeatID (с точки зрения DB, внешний ключ), вы можете создать свойство Navigation, которое будет подключать объект Tickets к объекту Seats. В терминах SQL это было бы похоже на написание чего-то вроде:

Select Ticket.Name, Seats.SeatName JOIN Seats ON Ticket.SeatID = Seats.SeatID

В вашем случае вы бы использовали что-то вроде:

EntityQuery<Web.Ticket> query =
           from t in _ticketContext.GetTicketsQuery().Include("Seats")
           where t.bookingId == data.bookingId
           select t;
    LoadOperation<Web.Ticket> loadOp = _ticketContext.Load(query);
    tk.ticketDataGrid.ItemsSource = loadOp.Entities;

Edit: в ваших метаданных для вашего объекта Tickets вы должны увидеть что-то вроде

public Seat Seats { get; set; }

Добавить это:

[Include]
public Seat Seats { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...