Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Solova, Вы писали:
S>>Почему бы не использовать DropDownList?
S>>S>><asp:DropDownList SelectedValue='<%# Bind("ProjectID") %>'
S>> DataSourceID="!Здесь имя Вашего SqlDataSource!" DataTextField="!Имя отображаемого поля!"
S>> DataValueField="!Имя поля, которое будет выступать значением!" ID="DropDownList" runat="server">
S>> </asp:DropDownList>
S>>
А>Таже проблемма как и у автора поста. Опишу проблемму:
А>использую VS 2010. АСП создаю страничку на которой выводятся данные из БД в ListView, при чем выводится объедененная таблица. Т.е. Имею таблицу Владельцы с полями ID, FirstName, LastName, CarID. И вторую таблицу Машины с полями ID и CarName. Теперь при редактировании записи в ListView, пытаюсь вместо выводимого TextBox для поля CarName, вывести DropDownList с данными из таблицы Машины. Получается все прекрасно до тех пор пока не пытаюсь привязывать выводимый DropDownList к редактируемой записи. А конкретно пытаюсь изменить выбранное значение списка, чтобы оно соответствовало текущему автомобилю редактируемого владельца. Вот пример кода:
А>А><EditItemTemplate>
А> <tr>...
А> ...
А> <td>
А> <asp:DropDownList ID="ddlCarID" runat="server" DataSourceID="SqlDataSource2"
А> DataTextField="CarName" DataValueField="ID" Visible="true"
А> SelectedValue='<%# Bind("CarName") %>'>
А> </asp:DropDownList>
А> </td>
А> ...
А> </tr>
А></EditItemTemplate>
А>
А>Если использую SelectedValue отладчик ругается выдает следующую ошибку: "Sys.WebForms.PageRequestManagerServerErrorException: 'ddlCarID' имеет SelectedValue, что недопустимо, так как этот элемент не существует в списке элементов. Имя параметра: value"
А>Привязать по SelectedIndex тоже не получается поскольку в выводимой таблице нет CarID а есть только CarName. Может конечно проблема возникает из-за того, что список я заполняю отдельным запросом SqlDataSource2, в то время как в ListView вывожу объдененную таблицу из SqlDataSource1. Но тогда мне собственно совсем не понятно как реализовать все одним запросом и список заполнить и в ListView вывести объедененную таблицу. Если кто-нибудь может подсказать как решить проблему буду очень признателен.
У Вас в качестве SelectedValue байндится поле CarName, а значения (ValueField) DropDownList выбираются из поля ID. Соответственно при привязке выбранного значения (SelectedValue) оно будет искаться в источнике данных по полю ID, а не CarName. Вам бы нужно поставить SelectedValue='<%# Bind("CarID") %>', где CarID — это ID записи в DropDownList, которую нужно выбрать. В общем Вам нужно, если я правильно всё понял, сделать в запросе JOIN по полю CardID, чтобы оно было в числе полей источника данных.