1

Id、ProgramName、ShortName、および Code としてプロパティを持つプログラム クラスがあります。私のアプリでは、次のような ASP DDL があります。

<asp:DropDownList ID="DDLProgram" runat="server" 
            OnSelectedIndexChanged ="OnDDLProgramChanged" AutoPostBack = "true">
    </asp:DropDownList>

私の OnDDLProgramChanged メソッドは次のように定義されています

protected void OnDDLProgramChanged(object sender, EventArgs e)
        {
            List<CcProgramEntity> programEntities = GetAllPrograms();

            DDLProgram.DataSource = programEntities;
            DDLProgram.DataTextField = "Shortname";
            DDLProgram.DataValueField = "Id";

            //My Problem goes here
            string programCode = programEntities[DDLProgram.SelectedIndex].Code;
        }

私のリストはすべてのレコードを正しく取得しています。チェックしました。しかし、DDL の項目を変更するたびに、選択したインデックスは変更されません。選択したインデックスはゼロのままです。そのため、他のアイテムのコードを取得できず、インデックス 0 のアイテムしか取得できません。

この場合、誰かが私を助けることができますか?

4

3 に答える 3

3

データを再度バインドするselectedIndex Change eventと、再バインド後に現在の SelectedIndex がリセットされます。データをドロップダウンに再バインドする必要はありませんSelectedIndex Change Event

それは次のようになるはずです..

protected void OnDDLProgramChanged(object sender, EventArgs e)
    {

        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }
于 2011-07-05T05:23:40.997 に答える
3

ページ読み込みメソッドでデータを DropDownList にバインドする必要があります

if (!IsPostBack)
{
    DDLProgram.DataSource = programEntities;
    DDLProgram.DataTextField = "Shortname";
    DDLProgram.DataValueField = "Id";
    DDLProgram.DataBind();
}

そうしないと、毎回データがバインドされるため、選択がクリアされます

于 2011-07-05T05:24:15.683 に答える
1

で DataSource を割り当てているのはなぜですかOnDDLProgramChanged。これは、行った選択をリセットすることになります。

于 2011-07-05T05:24:49.017 に答える