2015-07-13 3 views
0

Вот, у меня есть DropDownList в EditItemTemplate:C# - Как заполнить DropDownList в EditItemTemplate

<asp:TemplateField HeaderText="RequestedBy" SortExpression="RequestedBy"> 
         <EditItemTemplate> 
          <asp:DropDownList ID="ReqUserDDL" runat="server" AppendDataBoundItems ="True" DataSourceID="ReqUsersDataS" DataTextField="Name" DataValueField="Name" SelectedValue='<%# Bind("Name") %>' > 
          </asp:DropDownList> 
          <asp:SqlDataSource ID="ReqUsersDataS" runat="server" ConnectionString="<%$ ConnectionStrings:itassetmgmtConnectionString1 %>" SelectCommand="SELECT Firstname + Lastname AS Name FROM Users"></asp:SqlDataSource> 
         </EditItemTemplate> 
         <ItemTemplate> 
          <asp:Label ID="Label7" runat="server" Text='<%# Eval("RequestedBy") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 

Однако, я получаю эту ошибку:

DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Name'.

Есть ли способ исправить это?

ответ

0

Использовать Eval вместо Bind. Bind предназначен для чтения и/или записи, Eval доступен только для чтения.

EDIT: Ошибка Eval/Bind не из DataSource ReqUsersDataS. Он пытается создать столбец с именем «Имя» в источнике данных GridView, на котором был показан TemplateField. Вам просто нужно убедиться, что в другом источнике данных есть столбец с именем «Имя».

+0

Пробовал, что, ошибка. –

+0

'ReqUserDDL' имеет значение SelectedValue, которое недействительно, поскольку оно не существует в списке элементов. Имя параметра: значение –

+0

Ну, вам нужно убедиться, что любое значение, которое вы хотите выбрать, действительно существует в DropDownList. Если DropDownList имеет значения 10, 20, 30, и вы установите значение SelectedValue равным 40, вы получите эту ошибку. – Bsa0

Смежные вопросы