2016-11-22 2 views
-2

В ASP.NET я пытаюсь связать текст выпадающего списка с данными из базы данных. В списке я получил все правильные значения, которые используются для этого определенного столбца, но показанное значение не соответствует таковому в базе данных. Для значения B значение отображается правильно, но для других значений оно показывает значение A. Кто-нибудь как идея?ASP.NET dropdownlist binding не работает

EDIT

DropDownList используется в качестве столбца в Gridview, и я попытался добавить значения несколькими способами. Для столбца со значением «Lijndienst» он работает хорошо, но для всех остальных это просто показывает «Зеленый транспорт»

<asp:TemplateField HeaderText="Transport"> 
     <ItemTemplate> 
      <asp:Label ID="lblTransport" runat="server" Text='<%# Bind("Transport") %>' Visible="false" ></asp:Label> 
      <asp:DropDownList ID="ddlTransport" runat="server" Width="150px" Height="20px" > 
       <%--<asp:ListItem Text="Geen transport"></asp:ListItem> 
       <asp:ListItem Text="Lijndienst"></asp:ListItem> 
       <asp:ListItem Text="Intercity"></asp:ListItem> 
       <asp:ListItem Text="Firma Piping"></asp:ListItem> 
       <asp:ListItem Text="Firma E&I"></asp:ListItem> 
       <asp:ListItem Text="Zwaar"></asp:ListItem>--%> 
      </asp:DropDownList> 
     </ItemTemplate> 
    </asp:TemplateField> 

DropDownList ddlTransport = (e.Row.FindControl("ddlTransport") as DropDownList); 
     Label lblTransport = (e.Row.FindControl("lblTransport") as Label); 
     ddlTransport.DataSource = GetData("SELECT Transport FROM Transport", "Transport"); 
     ddlTransport.DataTextField = "Transport"; 
     ddlTransport.DataValueField = "Transport"; 
     ddlTransport.DataBind(); 
     ddlTransport.SelectedValue = lblTransport.Text; 
+0

нужны еще некоторые детали о проблеме, если это возможно, пожалуйста, предоставить мне код –

+0

Пожалуйста, покажите нам свой код. –

+1

можете ли вы опубликовать код, который используется для получения данных из базы данных? включая html-код для вашего раскрывающегося списка? – ElenaDBA

ответ

0

предполагая ваши данные в DataTable попробовать этот

var dt = new DataTable(); 
var ddl = new DropDownList(); //represents your drop down list 

foreach (DataRow row in dt.Rows) 
{ 
    var li = new ListItem(); 
    li.Text = row["text to show"].ToString(); 
    li.Value = row["value of dropdown item"].ToString(); 
    ddl.Items.Add(li); 
} 

ответ редактировать после уточнения с кодом в вопросе

Таким образом, это набор данных, который у меня есть, и в нем находится раскрывающийся список, это также рабочий пример. Althouh asnswer является VB это должно дать вам достаточно, чтобы работать с

<asp:TemplateColumn HeaderText="Switching to Product" HeaderStyle-CssClass="centre" ItemStyle-CssClass="centre"> 
<ItemTemplate> 
    <asp:DropDownList runat="server" Width="200px" CssClass="centre ddlMoveToProduct" ID="ddlProduct" AutoPostBack="True" OnSelectedIndexChanged="ddlProduct_Change"> 
    </asp:DropDownList> 
</ItemTemplate> 

, то вы хотите запустить это в коде

For Each item As DataGridItem In dgSuitableSwitch.Items 
     Dim ddlProduct As DropDownList = DirectCast(item.FindControl("ddlProduct"), DropDownList) 

     With ddlProduct 
      .Items.Add("-- Select Product") 
      .Items.Add("Premium Investments") 
      .Items.Add("Growth Portfolio (OEIC)") 
      .Items.Add("Income Portfolio (OEIC)") 
      .Items.Add("Index Linked Savings Bond") 
      .Items.Add("Fixed Term Investment") 
      .Items.Add("Cash") 
     End With 
    Next 

если вы хотите C# пример, дайте мне знать, и плохо код его \ преобразовать его для вас

Edit 2

ЭРВО C# версии для вас, как текст и значение будет такой же, но Theres достаточно кода во всех фрагментах для вас, чтобы добавить новый элемент списка с текстом и значением

foreach (DataGridItem item in dgSuitableSwitch.Items) 
{ 
    DropDownList ddlProduct = (DropDownList)item.FindControl("ddlSSProduct"); 

    ddlProduct.Items.Add("-- Select Product"); 
    ddlProduct.Items.Add("Premium Investments"); 
    ddlProduct.Items.Add("Growth Portfolio (OEIC)"); 
    ddlProduct.Items.Add("Income Portfolio (OEIC)"); 
    ddlProduct.Items.Add("Index Linked Savings Bond"); 
    ddlProduct.Items.Add("Fixed Term Investment"); 
    ddlProduct.Items.Add("Cash"); 
} 

редактировать 3

при добавлении пункты в выпадающем списке используйте код, подобные этим

ddl.Items.Add(new ListItem {Text = "your text here", Value = "your value here"}) 
+0

DropDownList является частью Gridview. Это не просто наполнение его ценностями. – NiAu

+0

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

+0

Я предпочитаю C#, но таким образом он заполняет выпадающее меню со значениями. Это идет хорошо, но тогда отображение значения базы данных не соответствует. – NiAu

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