从多个数组C#中将值插入listview

时间:2014-04-28 11:21:01

标签: c# .net arrays winforms listview

所以我有4个数组,它们包含名字,姓氏,用户名和访问类型(读,读/写,无)。我需要将这些数组中的值插入到包含34列的listview中,前3个对应于前3个数组,其余的需要包含这些用户的访问类型(列标题是他们有权访问的文件夹名称)或不)。我的问题在于访问类型数组。 如何从访问类型数组中将每行上的31个值插入到listview中?访问数组中的前31个值对应于第一个用户名,下一个31对应于第二个用户名,依此类推。直到现在我已经插入了前3个数组:

for (int i = 0; i < rows; i++)
{
    list.Items.Add(new ListViewItem(new string[] { fname[i], lname[i], uname[i] }));   
}

这会添加所有用户。

不知道如何插入其他值......

4 个答案:

答案 0 :(得分:1)

假设您的最后一个数组被称为accesslist,并且假设它对每个用户都有31个值,那么这将有效,尽管它会变得很长。

for (int i = 0; i < rows; i++)
{
    list.Items.Add(new ListViewItem(new string[] { fname[i], lname[i], uname[i],
        accesslist[0 + (i * 31)], accesslist[1 + (i * 31)], ... , accesslist[30 + (i * 31)] }));   
}

相反,在循环中创建一个字符串数组,并通过迭代accesslist来填充它:

for (int i = 0; i < rows; i++)
{
    var items = new string[34];

    items[0] = fname[i];
    items[1] = lname[i];
    items[2] = uname[i];

    for (int j = 0; j < 31; j++)
        items[j + 3] = accesslist[j + (i * 31)];

    list.Items.Add(new ListViewItem(items));
}

答案 1 :(得分:1)

&#34;访问类型&#34; 的数组转换为列表。创建一个具有这31个值的类,并创建该类的列表。那么你的工作将会快速而且减少。

public class accessType
{

public String prop1{get;set;}
public String prop2{get;set;}
public String prop3{get;set;}
.
.
.
public String prop31{get;set;}

}

现在列出一个类:

List<accessType> accessType=new List<accessType>();

然后在这里绑定列表视图:

Int32 i=0;
 accessType.ForEach(x=>
                lstViewTest.Items.Add(new ListViewItem{fname[i],lname[i],uName[i],x.prop1,x.prop2,x.prop3,....,x.prop31}); i++ 
                    );

答案 2 :(得分:0)

像......这样的事情。

for (int i = 0; i < rows; i++)
{
    list.Items.Add(new ListViewItem(new string[] { fname[i], lname[i], uname[i], accesstype[i * 31], accesstype[i * 31 + 1], etc, etc, ..., accesstype[i * 31 + 30] }));   
}

答案 3 :(得分:0)

上述问题还有另一个示例解决方案。

String[] firtNames = new String[] { "abc", "def", "ghi", "jkl" };
String[] lastNames = new String[] { "mno", "pqr", "stu", "vwx" };
String[] userNames = new String[] { "gb", "aa", "ss", "am" };
String[] actions = new String[] { "Get", "Set", "Submit", "Get", "Set", "Submit","Get","Set", "Submit", "Get", "Set", "Submit" };

Int32 counter = 31;
 var p = firtNames.Select((col, index) => new { FirstName = col, LastName = lastNames[index], UserName = userNames [index] , a1 = actions[index * counter], a2 = actions[index * counter + 1],..., a31 = actions[index * counter + 30] }).ToList();
        ListView1.DataSource = p;
        ListView1.DataBind();

将网格视图列与您在此处提到的名称绑定为FirstName,LastName。