0

我有一个 DropDownList 通过 OnInit 方法填充其值。它使用 HiddenField 并查询数据库以填充自身,如下所示:

protected void DropDown_Init(object sender, EventArgs e)
{
    try
    {
        string value = Page.Request[choice.UniqueID] == null ? choice.Value : Page.Request[choice.UniqueID].ToString();
        PricingModelDataContext ctx = new PricingModelDataContext();
        var list = from p in ctx.servers
                   where p.server_type == (((from a in ctx.server_types
                                             where a.name == value
                                             select new { a.id }).Single()).id)
                   && p.isActive.Value
                   select p;
        DropDownList dList = sender as DropDownList;
        dList.Items.Clear();
        dList.Items.Add("");
        foreach (var item in list)
        {
            dList.Items.Add(item.name);
        }

    }
    catch { }
}

一切正常,直到我单击一个自动填充值的按钮,如下所示:

DropDown_Init(DropDown, e);
DropDown.SelectedValue = "Set Value";

现在,每当页面重新加载 DropDownList 时,这些值都不会改变(它们仍然包含从按钮单击触发的原始​​值)。

为什么会出现这种行为?有没有办法解决这个问题?谢谢。

4

1 回答 1

0

好吧,我想通了。解决方案是基本上填充 Page_Load 中的值,使用 !IsPostBack 因此它只填充一次,并在运行时需要更改值时调用它。

这是根据 Cam Bruce 和 gunr2171 提到的几点。

非常感谢大家的帮助!

于 2013-07-25T18:40:04.850 回答