c# - 绑定(bind)到函数后,下拉列表在 postpack 后重置

标签 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;
}

如果我想从函数(数据库或网络服务)获取列表,那是不切实际的。但是此版本的 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/

相关文章:

c# - 如何使 JSON.NET 反序列化为 Microsoft 日期时间?

asp.net - 无法在 Mono 3 上的 xsp 上运行 asp.net 4.5 应用程序

ASP.NET DropDownList 在回发时不保留所选项目

c# - 似乎没有为 __doPostBack 发出正确的 GridView 标记

c# - 如何添加调试代码? (应该去Debug,不应该去Release)

c# - 使用泛型类型 'System.Collections.Generic.List' 需要 '1' 类型参数

c# - 使用 CaSTLe 单例会导致 ASP.NET Web 应用程序中的争用

c# - 如何读取所有行并填充 GridView

asp.net - 为什么回发后元素在页面上的位置会发生变化?

c# - 您可以并排放置两个编辑字段吗?