C# 检索加载页面中加载的列表值

C# 检索加载页面中加载的列表值,c#,list,C#,List,我正在页面加载中填充一个列表,我希望稍后访问该列表以绑定ddl 我曾尝试使用此方法获取值,但列表似乎为空 foreach (var E in employeeDDL) { Response.Write("Value " + E.ValueDDL); } 名单 在页面加载中填充 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { L

我正在页面加载中填充一个列表,我希望稍后访问该列表以绑定ddl

我曾尝试使用此方法获取值,但列表似乎为空

foreach (var E in employeeDDL)
{
   Response.Write("Value " + E.ValueDDL);
}
名单

在页面加载中填充

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<EmployeeDDL> EmployeeDDL = new List<EmployeeDDL>();
            using (MicrosoftDynamicsAXEntities db = new MicrosoftDynamicsAXEntities())
            {
                var employee = (from emp in db.Reports_EmplTable
                                where emp.CostCenter != "700"
                                && emp.VALIDTO > DbFunctions.AddDays(DateTime.Now, -30)
                                && emp.TimeTracking == "daStreetSmart"
                                orderby emp.FULLNAME
                                select new { emp.FULLNAME, emp.EMPLID } into x
                                select new { x.EMPLID, TextFieldValue = x.EMPLID + " - " + x.FULLNAME }
                ).ToList();
                foreach (var em in employee)
                {
                    EmployeeDDL.Add(new EmployeeDDL(em.EMPLID, em.TextFieldValue));
                }
            }
        }
    }

我希望ddl加载从填充列表中检索到的员工,但是列表为空。

您有两个单独的列表:
EmployeeDDL
employeeDDLs
。您正试图使用
employeeDDLs
作为下拉列表的数据源:

ddlEmployees.DataSource = employeeDDLs;
但在上面几行,您正在创建列表,但从未填写过:

List<EmployeeDDL> employeeDDLs = new List<EmployeeDDL>();
List employeeDDLs=new List();
从您向我们展示的内容中我们可以看出,您再也没有使用过列表
EmployeeDDL

为什么要在加载页面中创建
EmployeeDDL
?你需要在这里吗?如果在填充下拉列表“ddleemployees”之前不打算使用它,那么只需将所有列表创建和数据访问向下移动到创建和填充“ddleemployees”的位置上方即可


但是,如果确实需要在多个位置使用列表
EmployeeDDL
,并且需要跨页面回调将其持久化,则需要将列表放置到ViewState变量中。

在访问列表之前,您正在创建列表的新实例,因此它将始终为空。嗨,Casey,我的目标是只在Page_Load中创建它,然后在以后使用它,那么如何将它放入ViewState变量中以供以后使用呢?还是应该使用会话变量?我想如果不存储在变量中,就没有办法做我想做的事情了?我想在页面加载中创建列表,这样它就不会在每次回发时都重新加载。我还在中继器的页脚中使用ddl,在中继器加载之前无法访问它来填充ddl。我不知道是谁投了反对票,也不知道他们为什么投了反对票,但这是废话。最好的做法是在使用变量时创建并填充变量,而不是在之前。在这种情况下,如果你不打算在页面加载中使用列表,那么你真的不应该在那里创建和填充列表。我试图加快速度,同时避免在post back上重新填充列表。当ddl正在填充时,用户抱怨加载时间,有没有其他方法来实现这一点。@DougFarrell,正如我所说的。。如果您想在页面加载方法中加载下拉列表的数据,那就好了!但是,您需要将该数据保存到ViewState变量中,以便以后使用。
ddlEmployees.DataSource = employeeDDLs;
List<EmployeeDDL> employeeDDLs = new List<EmployeeDDL>();