在asp.net中,DDL的选定索引总是等于零
本文关键字:索引 等于零 net asp DDL | 更新日期: 2023-09-27 18:01:01
我有一个程序类,属性为Id、ProgramName、ShortName和Code,在我的应用程序中我有一个类似的ASP DDL
<asp:DropDownList ID="DDLProgram" runat="server"
OnSelectedIndexChanged ="OnDDLProgramChanged" AutoPostBack = "true">
</asp:DropDownList>
My 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索引的项之外,我无法获得其他项的代码。
在这种情况下有人能帮我吗?
您正在selectedIndex Change event
中再次绑定数据,它将在重新绑定后重置您当前的SelectedIndex。您不需要将数据重新绑定到SelectedIndex Change Event
中的下拉列表
应该是。。
protected void OnDDLProgramChanged(object sender, EventArgs e)
{
string programCode = programEntities[DDLProgram.SelectedIndex].Code;
}
您必须在页面加载方法上将数据绑定到DropDownList
if (!IsPostBack)
{
DDLProgram.DataSource = programEntities;
DDLProgram.DataTextField = "Shortname";
DDLProgram.DataValueField = "Id";
DDLProgram.DataBind();
}
否则,它将每次绑定数据,从而清除选择
为什么在OnDDLProgramChanged
中分配DataSource,这将重置您所做的选择。