在运行时使用 SetDataBinding 方法来设置 DataSource 和 DataMember 属性。下列数据源有效: DataTable 
DataView 
DataSet 
DataViewManager 
任何实现 IListSource 接口的组件 
任何实现 IList 接口的组件 
有关数据源的更多信息,请参见 Binding 类的概述。如果 DataSource 引用包含的表不止一个,则必须向 DataMember 属性设置一个字符串,该字符串指定要绑定到的表。例如,如果 DataSource 为包含名为 Customers、Orders 和 OrderDetails 三个表的 DataSet 或 DataViewManager,则必须指定要绑定的表。将 DataSource 设置为一个不实现 IList 接口的对象或者一个 IListSource 会导致网格发生异常。通过将 DataView 用作数据源并将 AddNew 属性设置为 false,可以创建网格,该网格允许用户编辑数据但阻止他们添加新行。要将 DataGrid 绑定到对象的强类型数组,该对象必须包含公共属性。要创建显示这类数组的 DataGridTableStyle,请将 MappingName 属性设置为 classname[],其中 classname 将被类名替换。另外还要注意 MappingName 属性须区分大小写。有关示例,请参见 MappingName 属性。也可以将 DataGrid 绑定到 ArrayList。ArrayList 的一个功能是它可以包含多种类型的对象,但当列表中的所有项与第一项具有相同的类型时,DataGrid 只能绑定到这类列表。这意味着所有的对象必须是同一种类型,或者必须从与列表中第一项相同的类继承。例如,如果列表中的第一项为 Control,则第二项可能为 TextBox(它从 Control 继承)。另一方面,如果第一项为 TextBox,则第二个对象就不可能是 Control。此外,ArrayList 在绑定时必须包含项目。空 ArrayList 会导致空网格。当绑定到 ArrayList 时,请将 DataGridTableStyle 的 MappingName 设置为“ArrayList”(类型名)。

解决方案 »

  1.   

    可以作为DataSource
    的类~!~楼主,,说我只会COPY吧~!类 说明 
    Array 提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。 
    ArrayList 使用大小可按需动态增加的数组实现 IList 接口。 
    CheckedListBox.CheckedIndexCollection 封装 CheckedListBox 中选中的项(包括处于不确定状态的项)的索引集合。 
    CheckedListBox.CheckedItemCollection 封装 CheckedListBox 控件中选中项(包括处于不确定状态的项)的集合。 
    CodeNamespaceImportCollection 表示 CodeNamespaceImport 对象的集合。 
    CollectionBase 为强类型集合提供抽象(在 Visual Basic 中为 MustInherit)基类。 
    ComboBox.ObjectCollection 表示 ComboBox 中项的集合。 
    Control.ControlCollection 表示 Control 对象的集合。 
    DataColumnMappingCollection 包含 DataColumnMapping 对象的集合。 
    DataTableMappingCollection DataTableMapping 对象的集合。无法继承此类。 
    DataView 表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。 
    DataViewManager 包含 DataSet 中每个 DataTable 的默认 DataViewSettingCollection。 
    EventDescriptorCollection 表示 EventDescriptor 对象的集合。 
    GridColumnStylesCollection 表示 System.Windows.Forms.DataGrid 控件中的 DataGridColumnStyle 对象的集合。 
    GridTableStylesCollection 表示 DataGrid 控件中的 DataGridTableStyle 对象的集合。 
    ImageList.ImageCollection 封装 ImageList 中的 Image 对象的集合。 
    LinkLabel.LinkCollection 表示 LinkLabel 控件内链接的集合。 
    ListBox.ObjectCollection 代表 ListBox 中项的集合。 
    ListBox.SelectedIndexCollection 表示这样的集合,该集合包含 ListBox 中选定项的索引。 
    ListBox.SelectedObjectCollection 表示 ListBox 中选定项的集合。 
    ListItemCollection 列表控件中的 ListItem 对象的集合。不能继承此类。 
    ListView.CheckedIndexCollection 表示包含列表视图控件中选中项的索引的集合。 
    ListView.CheckedListViewItemCollection 表示列表视图控件中选中项的集合。 
    ListView.ColumnHeaderCollection 表示 ListView 控件中列标头的集合。 
    ListView.ListViewItemCollection 表示 ListView 控件中项的集合。 
    ListView.SelectedIndexCollection 表示包含列表视图控件中选定项的索引的集合。 
    ListView.SelectedListViewItemCollection 表示列表视图控件中选定项的集合。 
    ListViewItem.ListViewSubItemCollection 表示 ListViewItem 中储存的 ListViewItem.ListViewSubItem 对象的集合。 
    Menu.MenuItemCollection 表示 MenuItem 对象的集合。 
    OdbcParameterCollection 表示与 OdbcCommand 相关的参数的集合以及它们各自到 DataSet 中列的映射。不能继承此类。 
    OleDbParameterCollection 表示与 OleDbCommand 相关的参数的集合以及它们各自到 DataSet 中列的映射。 
    OracleParameterCollection 表示与 OracleCommand 相关的参数的集合以及它们各自到 DataSet 中列的映射。不能继承此类。 
    PropertyDescriptorCollection 表示 PropertyDescriptor 对象的集合。 
    SchemaNameCollection 包含可以由 DirectoryEntries 对象的 SchemaFilter 属性使用的架构名列表。 
    SqlCeParameterCollection 收集与 SqlCeCommand 有关的所有参数以及它们各自到 DataSet 列的映射。 
    SqlParameterCollection 表示与 SqlCommand 相关的参数集合以及这些参数各自到 DataSet 中的列的映射。不能继承此类。 
    StatusBar.StatusBarPanelCollection 表示 StatusBar 控件中的面板集合。 
    StringCollection 表示字符串集合。 
    TabControl.TabPageCollection 包含 TabPage 对象集合。 
    TableCellCollection 封装 TableHeaderCell 和 TableCell 对象的集合,这些对象组成了 Table 控件中的一行。无法继承此类。 
    TableRowCollection 封装 TableRow 对象的集合,这些对象表示 Table 控件中的单行。无法继承此类。 
    ToolBar.ToolBarButtonCollection 封装一个 ToolBarButton 控件的集合,供 ToolBar 类使用。 
    TraceListenerCollection 提供 TraceListener 对象的线程安全列表。 
    TreeNodeCollection 
      

  2.   

    private void BindToDataView(DataGrid myGrid){
        // Create a DataView using the DataTable.
        DataTable myTable = new DataTable("Suppliers");
        // Insert code to create and populate columns.
        DataView myDataView = new DataView(myTable);
        myGrid.DataSource = myDataView;
     }
     private void BindToDataSet(DataGrid myGrid){
        // Create a DataSet.
        DataSet myDataSet = new DataSet("myDataSet");
        // Insert code to populate DataSet with several tables.
        myGrid.DataSource = myDataSet;
        // Use the DataMember property to specify the DataTable.
        myGrid.DataMember = "Suppliers";
     }
     private DataView GetDataViewFromDataSource(){
        // Create a DataTable variable, and set it to the DataSource.
        DataView myDataView;
        myDataView = (DataView) dataGrid1.DataSource;
        return myDataView;
     }
     private DataSet GetDataSetFromDataSource(){
        // Create a DataSet variable, and set it to the DataSource.
        DataSet myDataSet;
        myDataSet = (DataSet) dataGrid1.DataSource;
        return myDataSet;
     }
      

  3.   

    没明白啊,直接告诉我,怎么办才能把datareader内的记录,绑定到datagrid?
    不是行是吗?我看你的例子只有用dataset.
      

  4.   

    this.dataGrid1.DataSource=thisReader;
    this.dataGrid1.DataBind();
      

  5.   

    DataReader是一个基于连接的只前向读取的数据读取器,它是不可以作为datagrid的数据源与其绑定的。
      

  6.   

    只有实现了IListSource 或者IList接口的才可以做为复杂帮定的数据源!~你可以参看MSDN,了解有关实现以上两个接口的类~!
      

  7.   

    一般实现ILIST接口的类,多实现了ILISTSOURCE,如以上所贴出的列表~!
      

  8.   

    一般实现ILIST接口的类,多实现了ILISTSOURCE,如以上所贴出的列表~!------------------------------------------
    晕,上面这句话说反了。哈哈~!反过来就行了~!
      

  9.   

    绑定dataView或dataSet不一样能实现吗