置疑net1.1的帮助文档的DataGrid.DataSource
按着文档上所说,应该可以得到DataGrid的DataSource,我用DataView,DataSet都取不到数据?为何
ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfSystemWindowsFormsDataGridClassDataSourceTopic.htm
DataGrid.DataSource 属性 [C#]请参见
DataGrid 类 | DataGrid 成员 | System.Windows.Forms 命名空间 | DataMember | DataSet | DataViewManager | DataView | DataGrid 成员(Visual J# 语法) | C++ 托管扩展编程
要求
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
语言
C#
C++
JScript
Visual Basic
全部显示
获取或设置网格所显示数据的数据源。
[Visual Basic]
Public Property DataSource As Object
[C#]
public object DataSource {get; set;}
[C++]
public: __property Object* get_DataSource();
public: __property void set_DataSource(Object*);
[JScript]
public function get DataSource() : Object;
public function set DataSource(Object);
属性值
作为数据源的对象。
备注
在运行时使用 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”(类型名)。
示例
[Visual Basic, C#] 下面的示例显示如何设置 DataSource 和 DataMember(需要时),以便将 System.Windows.Forms.DataGrid 同时绑定到 DataView 和 DataSet。该示例还显示如何从 System.Windows.Forms.DataGrid 返回数据源。
[Visual Basic]
Private Sub BindToDataView(myGrid As DataGrid)
' Create a DataView using the DataTable.
Dim myTable As New DataTable( "Suppliers ")
' Insert code to create and populate columns.
Dim myDatatView As New DataView(myTable)
myGrid.DataSource = myDatatView
End Sub 'BindToDataView
Private Sub BindToDataSet(myGrid As DataGrid)
' Create a DataSet.
Dim myDataSet As 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 "
End Sub 'BindToDataSet
Private Function GetDataViewFromDataSource() As DataView
' Create a DataTable variable, and set it to the DataSource.
Dim myDatatView As DataView
myDatatView = CType(dataGrid1.DataSource, DataView)
Return myDatatView
End Function 'GetDataViewFromDataSource
Private Function GetDataSetFromDataSource() As DataSet
' Create a DataSet variable, and set it to the DataSource.
Dim myDataSet As DataSet
myDataSet = CType(dataGrid1.DataSource, DataSet)
Return myDataSet
End Function 'GetDataSetFromDataSource
[C#]
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;
}
[解决办法]
可以取到.如果有的话.如dataGrid1.DataSource = dt;dt = (DataTable)dataGrid1.DataSource ;取不到的情况可能是,postback了.