Wrox Home  
Search P2P Archive for: Go

  Return to Index  

aspx thread: get FieldCount error when trying to iterate IEnumerable... ?


Message #1 by "Chris Kersey" <ckersey@m...> on Wed, 25 Sep 2002 18:31:06 -0700
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




  Return to Index