動的にドロップダウンリストを更新する

私は、このドロップダウンリストにはすべてのものが入っています。唯一の問題は、自分のウェブサイトからデータベースに新しいアイテムを追加するたびに、何らかの理由でドロップダウンリストが更新されないということです。

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 Yeaドロップダウンリストでこのページに新しい項目を追加します。

0
このページに新しいアイテムを追加してもらえませんか?そうでない場合は、新しいアイテムを追加した後にセッションでユーザーを更新しますか?
追加された 著者 Yuriy Rozhovetskiy,
また、データベースの更新方法も教えてください。それはポストバックイベントを提供していますか?もしそうなら、それらのイベントを処理していないので、ドロップダウンリストは更新されません。
追加された 著者 Wayne In Yak,

2 答え

データベースにアイテムを追加するたびに、ドロップダウンリストを再バインドする必要があります。

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

つまり、DropDownLists(および他のコントロール)は、データがシーンの裏で変更されたことを知る方法がなく、自動的に検出できません。コントロールにデータを手動で再バインドするように指示する必要があります。

Page_Load(...){if!(IsPostback)の部分にうまくいきます。

3
追加された

このページに新しいプレフィックスをいくつかのポストバックアイテムを追加するので、この新しいアイテムをPrefixIDドロップダウンのアイテムコレクションに追加し、データベースに新しいプレフィックスを追加した後にSession内のCurrentUserインスタンスを更新する必要があります。

1
追加された