aspx thread: get FieldCount error when trying to iterate IEnumerable... ?
Thanks in advance for anyone willing....
I have a control that defines it's datasource as IEnumerable. I'm assigning
to this varibale an olereader. In my render routine, I'm trying to iterate
the results but instead I get this error: See below for code snippet. Any
help would be greatly appreciated. Side note: I can bind this datasource
to a datagrid just fine... so i know that datareader is getting populated.
------------ Error ---------------------
Invalid attempt to FieldCount when reader is closed
[InvalidOperationException: Invalid attempt to FieldCount when reader is
closed.]
System.Data.OleDb.OleDbDataReader.get_FieldCount() +41
System.Data.Common.DbEnumerator.BuildSchemaInfo() +24
System.Data.Common.DbEnumerator.MoveNext() +20
ckControls.ThumbnailViewer.Render(HtmlTextWriter output) in
d:\webprojects\webcontrollibrary\ckcontrols\thumbnailviewer.cs:58
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
+44
System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +397
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1900
-------------------------
In Page Load
-------------------------
if(!IsPostBack)
{
objConn = new System.Data.OleDb.OleDbConnection("data
source=D:\\zoinks2000.mdb;Provider=Microsoft.Jet.OLEDB.4.0;");
objConn.Open();
objComm = new System.Data.OleDb.OleDbCommand("Select title, main_pic from
pictures",objConn);
objRead = objComm.ExecuteReader();
//DataGrid1.DataSource = objRead;
//DataGrid1.DataBind();
ThumbnailViewer1.DataSource = objRead;
DataBind();
objConn.Close();
}
-------------------------
In control render override (DataSource is a property of type IEnumerable)
-------------------------
protected override void Render(HtmlTextWriter output)
{
IEnumerable data = DataSource;
IEnumerator dataItems = data.GetEnumerator();
while(dataItems.MoveNext()) //<------ This is where it fails...
{
output.Write("eek ");
}
}
Thanks,
Chris