C# dropdownlist未选择正确的索引

C# dropdownlist未选择正确的索引,c#,asp.net,sql,html-select,C#,Asp.net,Sql,Html Select,我有一个数据库绑定下拉列表,它从数据库中获取其值 调用ddl.SelectedItem.Text或.Value时,索引不正确 假设DB表中的值如下所示: Column1 | Column2 Dublin1 | Value1 Dublin2 | Value1 Dublin3 | Value1 London1 | Value2 London2 | Value2 London3 | Value2 SQL选择查询: SELECT [Column1],[Column2] FROM [Table] OR

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

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

假设DB表中的值如下所示:

Column1 | Column2

Dublin1 | Value1
Dublin2 | Value1
Dublin3 | Value1
London1 | Value2
London2 | Value2
London3 | Value2
SQL选择查询:

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,当我从dropwdownlist中获取所选项目时,它总是返回Dublin1,与伦敦值相同

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


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

您是否正在检查页面加载中是否有IsPostBack

if (!IsPostBack)
{  
    BindDropDownListddl();      
}
还可以将下拉列表中的AutoPostBack设置为true

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

您正在检查页面加载中是否有IsPostBack

if (!IsPostBack)
{  
    BindDropDownListddl();      
}
还可以将下拉列表中的AutoPostBack设置为true

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

我认为下拉列表中的值必须是唯一的,第2列有重复的值。您应该修改数据绑定以在文本和值上使用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]

我认为下拉列表中的值必须是唯一的,第2列有重复的值。您应该修改数据绑定以在文本和值上使用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]

您能用ddl.SelectedItem添加服务器端代码吗?TextItems和ValueItems是唯一的吗?这似乎很奇怪,如果您提供更多服务器端代码,我们可以帮助您:从[Table]中选择[Column1],[Column2]按[Column1]排序这是正确的值还是重复的值?您必须清除所选项才能使用ddl添加服务器端代码。SelectedItem?TextItems和ValueItems是唯一的吗?这似乎很奇怪,如果您提供更多服务器端代码,我们可以帮您:从[Table]按[Column1]顺序选择[Column1],[Column2]这是给出正确的值还是得到重复值?必须清除所选项目