asp.net listview, показывающий данные от связанной сущности и меняющий их - PullRequest
0 голосов
/ 15 июня 2010

Я использую структуру лица.Моя модель имеет сущность tblGameInfo, где в свойствах навигации есть ассоциации, называемые tblPlayer1 и tblPlayer2, которые связаны с сущностью tblPlayer.У меня есть список на моей странице, где я хочу показать информацию об игре с именами игроков.Я обнаружил, что в списке просмотра я должен иметь, например, один из них:

                <td>
                    <asp:Label ID="tblPlayer1Label" runat="server" 
                        Text='<%# Eval("tblPlayer1.FirstName")%>' />
                </td>
                <td>
                    <asp:Label ID="tblPlayer2Label" runat="server" 
                        Text='<%# GetPlayerName(Eval("tblPlayer2.id")) %>' />
                </td>

Но это не работает.У меня ничего не отображается в списке.Я пробовал много разных вариантов, но не могу найти работающий.Возможно, это простая ошибка, но я новичок в asp.net и не могу ее найти.Вторая проблема - редактирование.В редактируемом шаблоне есть выпадающий список со всеми игроками.

                <td>
                    <asp:DropDownList ID="DropDownList1" runat="server" 
                       DataTextField="FullName" 
                       DataValueField="id" 
                       SelectedValue='<%# Bind("tblPlayer2") %>'>  <- ??
                    </asp:DropDownList>
                </td>

Как мне связать данные?Не разрешено связывать и изменять свойства?Он пишет мне, что элемент не существует в списке элементов.

Ответы [ 2 ]

0 голосов
/ 20 июня 2010

На ваш вопрос 1:

Я предполагаю, что вы используете EntityDataSource в качестве источника данных для вашего ListView, это правильно?

Если это так, попробуйте добавить следующий атрибут вваш EntityDataSource:

Include="tblPlayer1, tblPlayer2"

Это загружает связанные сущности, когда DataSource выполняет запрос.

На ваш вопрос 2:

Здесь важно знать, если выиспользуя Entity Framework версии 4 или версии 1. И если вы используете EF4, если вы включаете внешние ключи в вашу модель или нет.

Если вы включаете внешние ключи, то у вас должны быть скалярные свойства, такие как tblPlayer1ID иtblPlayer1ID или аналогичный в вашей сущности tblGameInfo, которая представляет столбцы внешнего ключа в базовой таблице базы данных.В этом случае Bind("tblPlayer2ID") в вашем DropDownList должен работать.

0 голосов
/ 15 июня 2010

Попробуйте следующее:

Text='<%# GetPlayerName(((MyObjectType)Eval(("tblPlayer2")).id) %>' />

Там может быть дополнительный) неправильно, но, по сути, приведите ссылку на игрока 2, а затем получите его ID.

Кроме того, в EF вам необходимо загрузить все связанные объекты, прежде чем вы сможете их использовать, поэтому убедитесь, что привязываемый объект имеет загруженные свойства навигации.

Наконец, для списка drp down вы должны привести ссылку и указать идентификатор игрока, который вы можете получить из моего обновленного образца.

НТН.

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