绑定到函数后,回发后重置下拉列表

时间:2014-06-09 10:43:43

标签: c# asp.net postback

我在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;
}

这在我想要从函数(数据库或web服务)获取列表的地方不实用。但是这个版本的 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;
}

我读过很多文章,建议观点可能有所帮助。控件或页面上的viewstate组合无法解决问题。该列表始​​终重置。

1 个答案:

答案 0 :(得分:0)

New ListItem("Text","Value");

重复第二个函数中的值,需要将Count递增到foreach()循环中,