выбранный индекс DDL всегда равен нулю в asp .net - PullRequest
1 голос
/ 05 июля 2011

У меня есть программный класс, со свойствами, такими как Id, ProgramName, ShortName и Code, в моем приложении у меня ASP ASP вроде

<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.

Может ли кто-нибудь помочь мне в этом случае?

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Вы должны привязать данные к DropDownList при загрузке страницы методом

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

В противном случае он будет связывать данные каждый раз и, следовательно, отменяет выбор

3 голосов
/ 05 июля 2011

Вы снова связываете данные в вашем selectedIndex Change event, и после сброса будет сброшен ваш текущий SelectedIndex.Вам не нужно привязывать данные к вашему выпадающему списку в SelectedIndex Change Event

Это должно быть похоже на *

protected void OnDDLProgramChanged(object sender, EventArgs e)
    {

        string programCode = programEntities[DDLProgram.SelectedIndex].Code;
    }
1 голос
/ 05 июля 2011

Почему вы назначаете источник данных в OnDDLProgramChanged, это приведет к сбросу сделанного вами выбора.

...