Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检索存储在列表c#ASP.NET中的信息_C#_Asp.net_List - Fatal编程技术网

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

检索存储在列表c#ASP.NET中的信息,c#,asp.net,list,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<Perso

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

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..

}
公共类PlayerInfo
{
公共字符串名{get;set;}
公共字符串电子邮件{get;set;}
公共字符串DaysLeft{get;set;}
}
受保护的无效btn_单击(对象发送方,事件参数e)
{
List person_List=新列表();
foreach(my_gridview.Rows中的GridViewRow行)
{
复选框cb=(复选框)(行。单元格[2]。FindControl(“复选框”);
如果(cb.选中)
{
person_list.Add(new PlayerInfo(){FirstName=row.Cells[0]。Text,Email=row.Cells[2]。Text,DaysLeft=row.Cells[5]。Text});
}
其他的
{
}
}
等等。。
}
因此,如果我尝试输出person_list[0],这将不起作用,因为列表中的每个点都有三个相关项,因此列表中的位置0包含名字、电子邮件和剩余天数。在VisualStudio中调试时,我可以看到这些项被正确存储

如何从该列表中分别检索每个项目?例如,能够将值设置为循环中的变量,以便将电子邮件地址分配给一个电子邮件变量,将名字分配给另一个变量等等?我只处理过普通数组,以前从未遇到过层次结构列表


提前感谢。

像这样重复使用它

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

for(int i=0;i首先,您的列表变量是本地变量,因此如果您想在类之外访问它,您需要在类级别声明它

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

就迭代而言,它可以通过任何循环完成:

例如:

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

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

您可以使用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;
}
也可以使用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);
    }
 }

列表
网格视图
结合使用的一个好方法是将
DataPropertyNames
设置为自定义列表中属性的名称,并将其用作数据源,即

my_gridview.DataSource = person_list;

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

您在foreach循环中做什么?在原始帖子中编辑代码以包含foreach代码。
my_gridview.DataSource = person_list;