将ASP.NET GridView控件绑定到字符串数组

我试图将ASP.NET GridView控件绑定到string数组,我得到以下项目:

在所选数据源上找不到名为“Item”的字段或属性。

我应该在GridView控件中使用asp:BoundField列的DataField属性的正确值是什么。 这是我的源代码:

ASPX页面

       

代码背后:

 string[] MyArray = new string[1]; MyArray[0] = "My Value"; MyGridView.DataSource = MyArray; MyGridView.DataBind(); 

UPDATE

我需要将AutoGenerateColumns属性设置为false因为我需要生成其他asp:CommandField列。 我已更新我的代码示例以反映此方案

一种方法是将一个带有单个命名字段的类传递给它。 这样,你可以给它一个名字。

 public class GridRecord { public string MyValue { get; set; } } 

然后将您的字符串数组转换为类的列表

 string[] MyArray = new string[1]; MyArray[0] = "My Value"; List MyList = ( from ar in myArray select new GridRecord { MyValue = ar }).ToList(); MyGridView.DataSource = MyList; MyGridView.DataBind(); 

现在,您可以为DataField属性命名

      

经过几个小时的搜索,我终于发现这个案例有一个特殊的DataField:“

      

我希望有一天能帮助别人:)

尝试使用TemplateField替换BoundField,如下所示:

   <%# Container.DataItem %>   

顺便说一下,我从另一个问题中解除了这一点

这是一个使用旧DataGrid的完整示例…所以它看起来像是“!” 技巧已广泛实施。 这在VS2008中的ASP.NET下工作。 当然,只需替换正确的元素名称即可使用GridView。

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> <%@Import Namespace="System.Collections.Generic" %>        
<%initList(); %>

因此作为GridView的内部部分将是

       

如果你来回切换,请注意VS2008(至少)不能在Designer.cs类中重新声明控件类型,因此如果只编辑元素名称,则必须手动更改它。

迈克尔,

代码行

  

期望一个名为“Item”的列,如果您绑定到其中一个DataSource控件(如SqlDataSource,ObjectDataSource或LinqDataSource),则可以使用该列。 由于您绑定到IEnumerable,因此您没有这样的名称。