我有一个函数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时却没有问题
函数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时却没有问题
解决方案 »
- 服务器端按钮删除之前记录的详细确认最好的解决办法?
- freetextbox3.3.x本地上传图片重命名问题
- TreeView里的菜单显示/隐藏问题
- DropDownList的value值获取
- 在aspx如何调用cs中的函数,如何将结果输出在表格内
- datagrid导到excel,如何实现换行的效果,又不会被分成多条记录?
- 为什么window.opener.document.getElementById("txt").value=document.getElementById("hid").Value;附值后,父窗口代码里得不到txt文本框
- treeview遍历所有节点问题!?
- 各位大侠:Specified cast is not valid的问题请教大家!!!
- 怎么触发自定义控件中的事件?
- ASP.NET 2.0编程技巧之用Response对象输出图像
- 页面总提示下面的错误?怎么解决?
自己来绑定就没有问题
但是一用AutoGenerate就报错
一般来说你指定绑定数据字段后应设为 false