动态更新下拉列表

时间:2011-10-27 19:23:24

标签: asp.net c#-4.0

我已填充此下拉列表并且已完成所有操作。唯一的问题是每当我通过我的网站在数据库中添加新项目时,下拉列表不会因某种原因而更新。

private CurrentUser _cu = new CurrentUser();//just to check if use is an admin or not.

    protected void Page_Load(object sender, EventArgs e)
    {           
        _cu = (CurrentUser)Session[Common.SessVariables.CurUser];
        if (!_cu.CanReport) { Response.Redirect("~/default.aspx"); }

        CurrentUser cu = (CurrentUser)Session[Common.SessVariables.CurUser];
        if (!IsPostBack)
        {
            foreach (PrefixAdd loc in cu.Prefix)//Prefix is a Property
            {
                ListItem x = new ListItem(loc.Prefix);
                PrefixID.Items.Add(x);
            }
        }

    }

@Wayne我正在使用商店程序只插入Pre,yes,sey等前缀。然后列表中填充了前缀。

StringBuilder sbSQL = new StringBuilder(255);
sbSQL.Append(string.Format("exec insPrefix @Prefix=N'{0}';", PrefixBox.Text.Trim()));
string msg = string.Empty;
msg = (_oDAW.ExecuteNonQuery(sbSQL.ToString())) ? string.Format(Common.GetAppSetting(Common.ConfigKeys.User_Submit_Success), 
PrefixBox.Text.Trim()) : Common.GetAppSetting(Common.ConfigKeys.SubmitFail); //this is a somewhat custom method for CS and databinding.

@ Yuriy Rozhovetskiy是的,我使用下拉列表向此页面添加新项目。

2 个答案:

答案 0 :(得分:3)

每当您向数据库添加项目时,都必须重新绑定下拉列表。

yourDropDown.DataSource = //...
yourDropDown.DataBind();

也就是说,DropDownLists(和其他控件)无法知道他们的数据在幕后发生了变化,他们无法自动检测到它。您必须告诉控件手动重新绑定它们的数据。

Page_Load(...){ if !(IsPostback)部分做得很好。

答案 1 :(得分:1)

由于您在此页面上添加了一个带有回传项目的新前缀,因此您需要将此新项目添加到PrefixID下拉列表的Items集合中,并在向数据库添加新前缀后立即更新Session中的CurrentUser实例。