检索存储在列表c#ASP.NET中的信息

时间:2012-07-29 16:48:46

标签: c# asp.net list

我使用以下代码从列表中的网格视图行存储人员信息:

public class PlayerInfo
{
    public string FirstName { get; set; }
    public string Email { get; set; }
    public string DaysLeft { get; set; }
}


protected void btn_Click(object sender, EventArgs e)
{
    List<PersonInfo> person_list = new List<PersonInfo>();

          foreach (GridViewRow row in my_gridview.Rows)
        {
            CheckBox cb = (CheckBox)(row.Cells[2].FindControl("CheckBox"));
            if (cb.Checked)
            {
                person_list.Add(new PlayerInfo() {FirstName=row.Cells[0].Text,Email=row.Cells[2].Text,DaysLeft=row.Cells[5].Text});
            }
            else
            {

            }
        }

etc etc..

}

因此,如果我尝试输出person_list [0],这将无效,因为列表中的每个点都有三个项目,因此列表中的位置0包含第一个名称,电子邮件和剩余天数。在visual studio中调试时,我可以看到正确存储的项目。

如何从此列表中单独检索每个项目?例如,能够将值设置为循环中的变量,因此电子邮件地址将分配给电子邮件变量,第一个名称分配给另一个等等?我以前只处理过普通数组,之前从未遇到过分层列表。

提前致谢。

4 个答案:

答案 0 :(得分:3)

使用像这样的

迭代它
for(int i =0; i <person_list.Count; i++)
{
  string name =  person_list[i].FirstName;
  string email =  person_list[i].Email;
  string daysLeft =  person_list[i].DaysLeft;
}

答案 1 :(得分:0)

首先,你的列表变量是本地的,所以如果你想在你的课外访问它,你需要在课堂级别声明它。

其次,当您在列表中添加PersonInfo个对象时,您会从列表中获得PersonInfo

就迭代而言,可以使用任何循环来完成:

示例:

foreach(PersonInfo pInfo in person_list)
{
  // your code
} 

答案 2 :(得分:0)

有几种方法可以从列表中获取值。

您可以使用for或foreach迭代:

for (var i=0; i<person_list.Count; i++) {
    var email=person_list[i].Email;
}

foreach(var person in person_list) {
    var email=person.Email;
}

或者您可以使用索引访问各个成员:

var person=person_list[1];
if (person!=null) {
    var email=person.Email;
}

或者您可以使用Linq查询列表:

var person=person_list.FirstOrDefault(p=>p.FirstName=="Jack");
if (person!=null) {
    var email=person.Email; 
}

另外,要访问GridViewRow中的项目,可以使用GridViewRow.DataItem

foreach (GridViewRow row in my_gridview.Rows)
{
    var cb = (CheckBox)(row.Cells[2].FindControl("CheckBox"));
    if (cb.Checked)
    {
        person_list.Add(row.DataItem as PlayerInfo);
    }
 }

答案 3 :(得分:0)

ListsGridViews一起使用的一种漂亮方式是将DataPropertyNames设置为自定义列表中属性的名称,并将其用作数据源,即

my_gridview.DataSource = person_list;

除非您希望根据列表中的属性自动生成列,否则不要忘记设置my_gridview.AutoGenerateColumns = false;