GridView: редактирование базовых данных в GridView - PullRequest
1 голос
/ 12 января 2012

Ну, у меня есть GridView с редактируемым полем, например TemplateField с DropDownList. Мой код:

<Columns>
    ...
    <asp:TemplateField SortExpression="Room" HeaderText="Room">
        <EditItemTemplate>
            <asp:DropDownList ID="DropDownList1" Runat="server" DataSourceID="categoryDataSource" DataTextField="RoomNumber" DataValueField="RoomNumber" SelectedValue='<%# Bind("Room") %>'>
            </asp:DropDownList>
        </EditItemTemplate>
    </asp:TemplateField>
    <ItemTemplate>
        <asp:Label Runat="server" Text='<%# Bind("Room") %>' ID="Label1"></asp:Label>
    </ItemTemplate>
</Columns>

В моей БД есть таблица Rooms, в которой есть строки: RoomId, RoomNumber. В моем DropDownList я пытаюсь установить все значения из таблицы Rooms. Таблица имеет 3 строки (RoomId, RoomNumber): 1 - 20; 2 - 12; 3 - 24.

Но ошибка записи следует:

'DropDownList1' has a SelectedValue which is invalid because it does not exist in the list of items.

Имя параметра: значение Может кто-нибудь знает, где я ошибся?

Редактировать: Вот код SQLDataSource

<asp:SqlDataSource ID="categoryDataSource" Runat="server" 
    SelectCommand="SELECT [RoomId], [RoomNumber] FROM [Rooms] ORDER BY [RoomNumber]" 
    ConnectionString="Data Source=.\MSSQLSERVERR2;AttachDbFilename=|DataDirectory|\ARMDB.MDF;Integrated Security=True;User Instance=True">
</asp:SqlDataSource>

1 Ответ

3 голосов
/ 12 января 2012

Ошибка указывает на то, что значение, которое вы пытаетесь установить в качестве выбранного в раскрывающемся списке, не существует. Я считаю, что это произошло в основном потому, что вы не выбрали неправильное поле для значения в раскрывающемся списке или не указали неправильное значение.

Например, в вашем случае, скорее всего, вы храните RoomId (а не RoomNumber) в ссылочной таблице, поэтому вам необходимо соответствующим образом связать поле значения раскрывающегося списка

<asp:DropDownList ID="DDL1" Runat="server" DataSourceID="categoryDataSource" 
   DataTextField="RoomNumber" DataValueField="RoomId" 
   SelectedValue='<%# Bind("Room") %>'>

Примечание DataValueField значение - его RoomId, а не номер комнаты. (Предполагая, что Bind("Room") вернет номер комнаты)

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