所以我有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] }));
}
这会添加所有用户。
不知道如何插入其他值......
答案 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。