Выпадающие списки с привязкой к базе данных, показывающие System.Data.DataRowView вместо элементов?

#c# #.net #asp.net #drop-down-menu

#c# #.net #asp.net #выпадающее меню

Вопрос:

У меня на странице есть 3 выпадающих списка, все они используют одну и ту же строку подключения, которая является функциональной. Хотя третий DDL работает, первые два отображают только System.Data.DataRowView вместо элементов из таблицы. Почему? Это не команда select; названия таблиц и строк правильные, и даже когда я заменяю команды select рабочей командой DDLs, результат тот же. Код ниже:

Первый неработоспособный ddl:

 <asp:Panel ID="CustPanel" runat="server" BorderWidth="4px" CssClass="myPanelCss" Width="700px">
    <asp:Label ID="LblCustlist" runat="server" Text="Customer: " />
    <asp:DropDownList ID="DropDownList1" runat="server"  DataSourceID="SqlCustNameSource">
        <asp:ListItem Value="0" Text="Choose Customer" Selected="True"></asp:ListItem>
    </asp:DropDownList>
    <asp:SqlDataSource ID="SqlCustNameSource" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT [CustName] FROM [Customer]"></asp:SqlDataSource>
    <asp:Button ID="BtnCustShow" runat="server"  Text="New Customer" OnClick="BtnCustShow_Click" />
</asp:Panel>
  

Второй неработоспособный ddl:

 <asp:Panel ID="BroPanel" runat="server" BorderWidth="4px" CssClass="myPanelCss" Width="700px">
    <asp:Label ID="LblBrolist" runat="server" Text="Broker: " />
    <asp:DropDownList ID="DdlBro" runat="server" DataSourceID="SqlBroNameSource">
        <asp:ListItem Value="0" Text="Choose Customer" Selected="True"></asp:ListItem>
    </asp:DropDownList>
<asp:SqlDataSource ID="SqlBroNameSource" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT [BroName] FROM [Broker]"></asp:SqlDataSource>
    <asp:Button ID="BtnBroShow" runat="server" Text="New Broker" OnClick="BtnBroShow_Click" />
</asp:Panel>
  

И рабочий ddl:

 <asp:DropDownList ID="DdlCustState" runat="server"  DataSourceID="SqlDataSource2" DataTextField="State" DataValueField="State" />
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT [State] FROM [States]">
</asp:SqlDataSource>
  

Как я уже сказал, если я сделаю команду select для первых двух такой же, как и для третьего, функционального ddl, я все равно получу тот же сбой. Есть идеи?

Ответ №1:

У вас есть DataTextField =»State» и DataValueField = «State» на том, который работает, но не на тех, которые этого не делают.

Ответ №2:

РЕДАКТИРОВАТЬ: Игнорируйте информацию, которую я опубликовал секунду назад.

То, что говорится на плакате выше, верно. В ваших DDL отсутствуют их DataTextField =»» DataValueField =»»

поля, которые они используют для заполнения значений в самом списке.