我在 asp.net 项目中遇到下拉列表问题。经过详尽的检查后,我将范围缩小到两种情况。在您回复之前,请自己尝试一下作为证据。 VS2010 或 VS2012 ASP.Net 项目。我向你保证这行不通。
我认为自己是一名经验丰富的 .net 开发人员,像这样的代码通常对我来说确实非常微不足道,但我完全被这个代码难住了。
任何帮助将不胜感激
在我的 default.aspx Page_Load 事件页面中,我只有这段代码,没有其他内容
if (!IsPostBack)
{
cboDept1.DataSource = GetTeamGroups();
cboDept1.DataValueField = "Value";
cboDept1.DataTextField = "Text";
cboDept1.DataBind();
}
使用此版本的 GetTeamGroups 函数代码,下拉列表按预期工作,列表被保留,我可以在每次回发后毫无问题地获取 SelectedItem 等。
private List<ListItem> GetTeamGroups()
{
List<ListItem> oList = new List<ListItem>();
oList.Add(new ListItem("1", "1"));
oList.Add(new ListItem("2", "2"));
oList.Add(new ListItem("3", "3"));
oList.Add(new ListItem("4", "4"));
return oList;
}
如果我想从函数(数据库或网络服务)获取列表,那是不切实际的。但是此版本的 GetTeamGroups 函数会在每次回发时重置下拉列表。我无法获取 SelectedItem。 (PS。使用什么代码来动态填充列表并不重要,问题是一样的。似乎无法动态填充列表以使其起作用)。
private List<ListItem> GetTeamGroups()
{
List<ListItem> oList = new List<ListItem>();
string[] sGroups = ConfigurationManager.AppSettings["Groups"].ToString().Split(';');
int iCount = 0;
foreach (string sGroup in sGroups)
{
oList.Add(new ListItem(sGroup, iCount.ToString()));
}
return oList;
}
我读过很多文章,认为 View 状态可能有所帮助。控件或页面上的 View 状态组合无法解决问题。该列表总是重置。
最佳答案
New ListItem("Text","Value");
第二个函数中的值是重复的,需要在foreach()循环中增加iCount,
关于c# - 绑定(bind)到函数后,下拉列表在 postpack 后重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118568/