2011-12-01 43 views
3

我有一个ASP.NET DropDownList这是由一个XML文件填充一个问题:为什么我的DropDownList的SelectedItem不起作用?

rblState.DataSource = dsState; 
rblState.DataValueField = "abbreviation"; 
rblState.DataTextField = "name"; 
rblState.DataBind(); 

这工作正常,但是并显示所有正确的数据,当我尝试和检索所选值出现问题从列表中点击按钮后:

string state = rblState.SelectedItem.Text; 
Console.WriteLine(state); 

这总是只输出列表中的第一个值。

任何人都知道这个解决方案吗?

+1

这是下拉的'AutoPostBack'属性设置为true? – MilkyWayJoe

回答

8

您可能重新绑定了回发站上的DataSource

//only bind on the first request 
if (!Page.IsPostBack) 
{ 
    rblState.DataSource = dsState; 
    rblState.DataValueField = "abbreviation"; 
    rblState.DataTextField = "name"; 
    rblState.DataBind(); 

} 
+1

感谢你们的帮助,这工作,不知道为什么我没有想到之前 – RyanDreggs

2

尝试把你的填充码

if (!Page.IsPostBack) 
{ 
    //your code here 
} 
+0

这个答案已经列出。 – akdora

0

贵控制有runat="server"属性集?那个人肯定会在一个点或另一个点上咬住我们所有人。

另外,我相信你必须设置你的AutoPostBack="true",所以当你改变一个列表项时它会通知服务器。否则,我相信你必须得到它的客户端,如果它没有用新选择的选项更新服务器。

0

与任何变量一样,在尝试调用子属性之前,应该始终检查它们。

检查SelectedIndex != -1以确保选择了一个值或检查以确保SelectedItem != null

确保您仅在页面第一次加载时绑定您的DropDownList(如Kemal所述)。