dropdownlist没有选择正确的索引

时间:2013-04-12 13:12:42

标签: c# asp.net sql html-select

我有一个数据库绑定下拉列表,它从数据库中获取其值。

当我调用ddl.SelectedItem .Text或.Value时,索引不正确。

假设数据库表中的值是这样的:

Column1 | Column2

Dublin1 | Value1
Dublin2 | Value1
Dublin3 | Value1
London1 | Value2
London2 | Value2
London3 | Value2

SQL select query:

SELECT [Column1],[Column2] FROM [Table] ORDER BY [Column1]

DDL:

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column2"></asp:DropDownList>

仅在ASPX上绑定:

<asp:SqlDataSource ID="SQLDataSource" runat="server" 
      ConnectionString="<%$ConnectionStrings:DatabaseConnectionString %>" 
      SelectCommand="SELECT [Column1],[Column2],FROM [Table] ORDER BY [Column1]">
</asp:SqlDataSource>

因此,当我从下拉列表中获取选定项目时,无论我选择Dublin2还是Dublin3,它总是会返回Dublin1,与伦敦值相同。

ddl正确填充item.text和item.value。

我是否需要设置有关边界的内容?

2 个答案:

答案 0 :(得分:2)

您是否在Page_Load中检查IsPostBack。

if (!IsPostBack)
{  
    BindDropDownListddl();      
}

还为下拉列表将AutoPostBack设置为true。

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column2" AutoPostBack="true" ></asp:DropDownList>

答案 1 :(得分:2)

我认为下拉列表中的值必须是唯一的,Column2具有重复值。您应该修改数据绑定以在文本和值上使用Column1

<asp:DropDownList runat="server" ID="ddl" 
 DataSourceID="SQLDataSource" DataTextField="Column1" 
 DataValueField="Column1"></asp:DropDownList>

然后在访问代码后面,您需要一个表的副本并像这样访问它以获取值:

Dictionary<string, string> table = //Get the table here with Column1 as keys    
table[ddl.SelectedItem.Value]