C# dropdownlist未选择正确的索引
我有一个数据库绑定下拉列表,它从数据库中获取其值 调用ddl.SelectedItem.Text或.Value时,索引不正确 假设DB表中的值如下所示: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
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]这是给出正确的值还是得到重复值?必须清除所选项目