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 回答