C# ASP.NET dropdownlist绑定不起作用
在ASP.NET中,我试图将dropdownlist的文本与数据库中的数据绑定。在列表中,我得到了用于该特定列的所有正确值,但显示的值与数据库中的值不一致。对于值B,正确显示该值,但对于其他值,则显示值A。 有人认为这是个好主意吗 编辑 DropDownList用作Gridview中的列,我尝试以多种方式添加值。对于值为“Lijndienst”的列,它工作正常,但对于所有其他列,它只显示“绿色交通”C# ASP.NET dropdownlist绑定不起作用,c#,asp.net,data-binding,dropdown,C#,Asp.net,Data Binding,Dropdown,在ASP.NET中,我试图将dropdownlist的文本与数据库中的数据绑定。在列表中,我得到了用于该特定列的所有正确值,但显示的值与数据库中的值不一致。对于值B,正确显示该值,但对于其他值,则显示值A。 有人认为这是个好主意吗 编辑 DropDownList用作Gridview中的列,我尝试以多种方式添加值。对于值为“Lijndienst”的列,它工作正常,但对于所有其他列,它只显示“绿色交通” <asp:TemplateField HeaderText="Transport">
<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;
假设您的数据位于数据表中,请尝试以下操作
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);
}
用问题代码回答澄清后的编辑
这是一个我拥有的数据网格,里面有一个下拉列表项,这也是一个工作示例。虽然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>
如果您想要一个C示例,请告诉我,我会为您编码\转换它
编辑2
这是c版本,文本和值都是相同的,但是所有代码段中都有足够的代码,可以添加一个包含文本和值的新列表项
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"})
需要更多关于这个问题的细节,如果可能的话,请提供代码。请向我们展示您的代码。您可以发布用于从数据库获取数据的代码吗?是否包含下拉列表的html代码?下拉列表是Gridview的一部分。这不仅仅是用值填充。现在我们有了一些代码,给我几分钟时间,我会编辑我的答案。我更喜欢C,但这样它会用值填充下拉列表。这很好,但是显示数据库的值不符合要求。你能用你的代码更新你的问题吗?我来看看是怎么回事
ddl.Items.Add(new ListItem {Text = "your text here", Value = "your value here"})