DataGrid不能绑定数据
我有一个函数A返回一个OracleDataGrid
函数B将A转换成DataTable
然后我去绑定一个DataGrid
A如下
public static OracleDataReader GetAnalysedInfo()
{
OracleDataReader dr = null;
DataBase db = new DataBase();
string sqlStr = "select MID, NTH from maintable where isanalysed = 1 ";
try
{
db.CreateDataReader(sqlStr, out dr);
}
catch(Exception e)
{
throw new Exception( "得到已经分析完的图幅出错 ", e);
}
return dr;
}
B如下
public static DataTable ConvertDataReaderToDataTable(OracleDataReader dataReader)
{
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
try
{
foreach(DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[ "ColumnName "].ToString();
datatable.Columns.Add(myDataColumn);
}
//添加数据
while(dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i <schemaTable.Rows.Count;i++)
{
myDataRow[i] = dataReader[i].ToString();
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch(Exception e)
{
throw new Exception( "转换为DataTable出错! ", e);
}
}
结果绑定时报错
ID 为“DataGrid1”的 DataGrid 未能从选定数据源自动生成任何列。
但是我用这个DataTable的某个列来绑定一个DropDownList时却没有问题
------解决方案--------------------AutoGenerateColumns 为 true 时 dategrid 会在绑定时自动生成列
一般来说你指定绑定数据字段后应设为 false