使用自定义的数据源进行DataGrid控件的数据绑定

 

自定义的集合类
/// <summary>
 /// Collection 的摘要说明。
 /// </summary>
 public class Collection : System.Collections.CollectionBase
 {
  public Collection()
  {
   for(int i = 0;i < 10;i++)
   {
    base.InnerList.Add(new Element(i,string.Format("a[{0}]",i)));
   }
  }
 }

集合元素类 
public class Element
 {
  private string name;
  public string ValueName
  {
   get{return name;}
  }
  private int valu;
  public int Value
  {
   get{return valu;}
  }
  public Element(int val,string nam)
  {
   name = nam;
   valu = val;
  }
 }

aspx的后置代码
/// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DataGrid DataGrid1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   DataGrid1.DataSource = new Collection();
   DataGrid1.DataBind();
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }

aspx页的html代码
 <body MS_POSITIONING="FlowLayout">
 <form id="Form1" method="post" runat="server">
  <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="224px">
    <Columns>
     <asp:TemplateColumn HeaderText="名称">
      <ItemTemplate>
       <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ValueName") %>'>
       </asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem") %>'>
       </asp:TextBox>
      </EditItemTemplate>
     </asp:TemplateColumn>
     <asp:TemplateColumn HeaderText="数字">
      <ItemTemplate>
       <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Value") %>'>
       </asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem") %>'>
       </asp:TextBox>
      </EditItemTemplate>
     </asp:TemplateColumn>
    </Columns>
   </asp:DataGrid>
  </form>
 </body>
</HTML>

原文地址:https://www.cnblogs.com/asyuras/p/165321.html