我已填充此下拉列表并且已完成所有操作。唯一的问题是每当我通过我的网站在数据库中添加新项目时,下拉列表不会因某种原因而更新。
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是的,我使用下拉列表向此页面添加新项目。
答案 0 :(得分:3)
每当您向数据库添加项目时,都必须重新绑定下拉列表。
yourDropDown.DataSource = //...
yourDropDown.DataBind();
也就是说,DropDownLists(和其他控件)无法知道他们的数据在幕后发生了变化,他们无法自动检测到它。您必须告诉控件手动重新绑定它们的数据。
Page_Load(...){ if !(IsPostback)
部分做得很好。
答案 1 :(得分:1)
由于您在此页面上添加了一个带有回传项目的新前缀,因此您需要将此新项目添加到PrefixID下拉列表的Items集合中,并在向数据库添加新前缀后立即更新Session中的CurrentUser实例。