当下拉列表绑定到XmlDataSource时,如何以编程方式设置SelectedValue?

28
我正在使用 XmlDataSource 作为 dropdownlistdatasource。现在当页面最初加载时,我想设置下拉列表的SelectedValue。我尝试过在下拉列表的OnDataBound事件中设置SelectedValue,但没有起作用。在OnDataBinding事件中,我甚至无法看到所有的选项,可能是因为该列表尚未绑定?那么,如何根据值设置选择索引呢?

不,下拉列表没有被填充,因为我想在Page_Load中设置SelectedValue。 - MNIK
1
在调用 DropDownList 的 DataBind 后,您是否尝试过做类似 ddl.SelectedIndex = 0 的操作? - TheGeekYouNeed
1
一种解决方案是在设置选定值之前以编程方式绑定下拉列表。您还可以在 ASP.NET 页面生命周期中找到在声明性数据绑定发生后发生的事件。 - Jonathan Nesbitt
成功了。我一直在尝试绑定事件,但从未直接在下拉列表上调用DataBind。但是当我这样做时,它起作用了。谢谢。 - MNIK
将我的评论发布为答案。 - TheGeekYouNeed
显示剩余3条评论
4个回答

79

这对我来说似乎有效。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DropDownList1.DataBind(); // get the data into the list you can set it
            DropDownList1.Items.FindByValue("SOMECREDITPROBLEMS").Selected = true;
        }
    }

18
DropDownList1.Items.FindByValue(stringValue).Selected = true; 

应该工作。


11

这是可运行的代码

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            { 
                    DropDownList1.DataTextField = "user_name";
                    DropDownList1.DataValueField = "user_id";
                    DropDownList1.DataSource = getData();// get the data into the list you can set it
                    DropDownList1.DataBind();

    DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("your default selected text"));
            }
        }

-4
你尝试过在调用DropDownList的DataBind方法后,执行类似ddl.SelectedIndex = 0这样的操作吗?

2
请考虑格式化此答案-除此之外,它是错误的(或者不完全是OP所要求的)。只需将其删除即可。 - Piotr Kula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接