GridView 需要具有属性的类的集合或 IEnumerable,并且属性映射到列。
像您这样的数组具有没有绳索的值类型对象(字符串),因此您无法将属性绑定到列。
ArrayList boxesarray = new ArrayList();
你可以像这样创建一个简单的类:
public class PropertyContainer
{
public string Value {get;set;}
}
// NOTE: you can override ToString(); to customize String.Format behaviour
// and to show it in the debugger (althought there's other way for this, using
// DebuggerDisplayAttribute)
并创建并填充此类的数组,该数组将正确绑定到数据网格。
foreach (PSObject ps in commandResults)
boxesarray.Add(
new PropertyContainer { Value = ps.Properties["Name"].Value.ToString()});
boxes.DataSource = boxesarray;
boxes.DataBind();
其他选项是使用 LINQ 将数组转换为对象数组。如果数据网格列设置为自动创建,您甚至可以使用匿名对象。
// anonymous type
var dataForBinding = boxesArray.select(val => new {Value = val});
// array of the class
var dataForBinding = boxesArray.select(val => new PropertyContainer
{ Value = val });
您可以将此数据绑定到您的 gridview,它将完美地工作。