0

フォームに2つのDropDownListがあります。どちらにもアイテムはありません。Page_Loadイベントで、プライベートメソッドから返されたDropDownListオブジェクトにそれらを割り当てます。ただし、ページが読み込まれると、両方のドロップダウンリストはまだ空です。塗りつぶされたドロップダウンリストを返すメソッド内でデバッグしました。これらにはアイテムが含まれています。何か問題はありますか?

コード:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ddlUserTypes = UserTypesList();
    }
}

   private DropDownList UserTypesList()
{
    DropDownList ddList = new DropDownList();
    StaticDataProvider stDataProv = new StaticDataProvider();
    ddList.DataSource = stDataProv.UserTypes();
    ddList.DataTextField = "Value";
    ddList.DataValueField = "Key";
    ddList.DataBind();

    return ddList;
}

また、Response.Write()を実行すると、ddlUserTypesのアイテムが、ページにリストされているすべてのアイテムを取得します。アイテムはそこにあるようです、それらはただ見えません。

4

5 に答える 5

4

コードの修正

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        UserTypesList(ddlUserTypes);
    }
}

   private void UserTypesList(DropDownList ddList)
{

    StaticDataProvider stDataProv = new StaticDataProvider();
    ddList.DataSource = stDataProv.UserTypes();
    ddList.DataTextField = "Value";
    ddList.DataValueField = "Key";
    ddList.DataBind();

}
于 2012-04-06T12:48:57.983 に答える
0

あなたのコードを見ることができますか?WebフォームまたはMVC?

ドロップダウンリストのDataValueFieldプロパティとDataTextFieldプロパティを設定してみましたか?また、ドロップダウンの.DataBind()を呼び出していますか?

答えを提供するために本当にあなたのコードを見る必要があります。

于 2012-04-06T12:44:50.850 に答える
0

これは、コードを見ずに推測したものです。ロードハンドラではなく、事前レンダリングイベントハンドラで実行してみてください。

于 2012-04-06T12:55:07.700 に答える
0
if (!IsPostBack)
    {
        UserTypesList(ddlUserTypes);
    }


private void UserTypesList(DropDownList ddList)
{
    StaticDataProvider stDataProv = new StaticDataProvider();
    ddList.DataSource = stDataProv.UserTypes();
    ddList.DataTextField = "Value";
    ddList.DataValueField = "Key";
    ddList.DataBind();
}

コントロールの新しいインスタンスを作成し、ページから現在のインスタンスにその場で割り当てるだけです。新しいコントロールを作成するときはControls.Add、を使用する必要があります。これはおそらく、舞台裏で他のことを行います。

于 2012-04-06T13:04:27.163 に答える
-1

試す

DropDownLists.Items.Refresh
于 2012-04-06T12:45:24.470 に答える