仅将项目添加到下拉列表中一次

时间:2012-02-27 18:10:51

标签: c# asp.net

我有一个下拉列表,在页面加载时填充,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
        ddlCars.Items.Add("Ford");
        ddlCars.Items.Add("Chevy");
        ddlCars.Items.Add("BMW");
        ddlCars.Items.Add("Jeep");
        ddlCars.Items.Add("Nissan");

}

它运行正常,但是当用户更改下拉列表的选择时,列表会重新填充,我会看到相同的项目两次,因为页面正在重新加载并且正在重新添加这些值。

阻止这种情况发生的最佳方法是什么?重要的是AutoPostBack保持启用状态,以便根据用户选择更改信息。

由于

2 个答案:

答案 0 :(得分:10)

您需要将该代码放在!Page.IsPostBack块中。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack)
    {
        ddlCars.Items.Add("Ford"); 
        ddlCars.Items.Add("Chevy"); 
        ddlCars.Items.Add("BMW"); 
        ddlCars.Items.Add("Jeep"); 
        ddlCars.Items.Add("Nissan"); 
    }
}

这将允许该代码运行一次(当页面第一次加载时),然后在页面由于用户交互等而回发到服务器时被忽略。

有关详细信息,请参阅MSDN上的Page.IsPostBack

答案 1 :(得分:4)

protected void Page_Load(object sender, EventArgs e)
{
        if (!IsPostBack) {        
        ddlCars.Items.Add("Ford");
        ddlCars.Items.Add("Chevy");
        ddlCars.Items.Add("BMW");
        ddlCars.Items.Add("Jeep");
        ddlCars.Items.Add("Nissan");
        //ddlCars.datasource=?
        //ddlCars.databind();
        }
}