Dropdownlist dynamisch bijwerken

Ik heb deze dropdownlist gevuld en zo. Het enige probleem is dat telkens wanneer ik via mijn website een nieuw item in de database toevoeg, de vervolgkeuzelijst om de een of andere reden niet wordt bijgewerkt.

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 Ik gebruik een winkelprocedure om een ​​voorvoegsel in te voegen zoals Pre, yes, sey, etc. Vervolgens wordt de lijst gevuld met prefixen.

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 Ja, ik voeg nieuwe items toe aan deze pagina met de vervolgkeuzelijst.

0
Voeg je nieuw item toe op deze pagina of niet? Zo niet, werk je de gebruiker in sessie bij nadat je een nieuw item hebt toegevoegd?
toegevoegd de auteur Yuriy Rozhovetskiy, de bron
U moet ons ook vertellen hoe u de database bijwerkt. biedt het een postback-evenement? als dat het geval is, wordt je dropdownlist niet bijgewerkt omdat je die evenementen niet verwerkt.
toegevoegd de auteur Wayne In Yak, de bron

2 antwoord

Telkens wanneer u een item aan uw database toevoegt, moet u uw vervolgkeuzelijst opnieuw maken.

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

Dat wil zeggen dat DropDownLists (en andere besturingselementen) niet weten dat hun gegevens achter de schermen zijn gewijzigd, ze kunnen het niet automatisch detecteren. U moet de bedieningselementen vertellen om hun gegevens handmatig opnieuw te verbinden.

Goed gedaan op het gedeelte Page_Load (...) {if! (IsPostback) .

3
toegevoegd

Aangezien u een nieuw voorvoegsel op deze pagina toevoegt met een postback-item, moet u dit nieuwe item toevoegen aan de Items-verzameling van PrefixID dropdown en de CurrentUser-instantie in Sessie rechts bijwerken nadat u een nieuw prefix aan de database hebt toegevoegd.

1
toegevoegd