我有一个ASP.NET webform,我使用DropDownList控件允许用户选择一个项目并查看相关结果。出于某种原因,当我设置DropDownList的SelectedValue属性时,它设置的值不会立即可用。
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DropDownList1.SelectedValue = "5";
BindView();
}
}
protected void BindActivities()
{
DataClassesDataContext dc = new DataClassesDataContext();
var query = from activity in dc.Activities
where activity.AssignedTo == Convert.ToInt32(DropDownList1.SelectedValue);
GridView1.DataSource = query;
GridView1.DataBind();
}
在前面的代码中,我得到DropDownList1.SelectedValue为null的错误。奇怪的是,如果我注释掉使用DropDownList1.SelectedValue的代码并让页面加载,DropDownList1实际上设置为值5.所以看起来它设置正确但是不能立即可用。调试器确认DropDownList.SelectedValue在设置它的代码行之后不会立即设置为5。
这里有什么想法?
答案 0 :(得分:7)
您是否在绑定下拉列表之前设置了值?
答案 1 :(得分:2)
是的,上面的用户是对的
if (!Page.IsPostBack)
{
BindView();
DropDownList1.SelectedValue = "5";
}
......应该可以正常工作。
没有延迟执行,只是执行的顺序。