PC Review


Reply
Thread Tools Rate Thread

Cant bind Repeater to Custom Collection

 
 
A Traveler
Guest
Posts: n/a
 
      19th Oct 2004
Hi,

I have a custom collection class i wrote, LineItemsCollection, which is a
strongly typed collection of objects of my LineItem class.
The LineItem class is a simple class with just a couple properties, ProdID,
Description, Quantity and UPC. 3 strings and a long.
The LineItemsCollection class inherits from
System.Collections.Specialized.NameObjectCollectionBase.
It also implements both IEnumerable and IList.

I can bind a DataGrid to my collection with no problem. In the
ItemCreated/ItemDataBound, the value of e.Item.DataItem is properly returned
as a LineItem object. So i can do <%#
DataBinder.Eval(Container,"DataItem.Quantity") %> and get back a quantity.

However, if i try to bind to a Repeater, and i do the same thing, i get an
error "DataBinder.Eval: 'System.String' does not contain a property with the
name Quantity." I had had this problem with the datagrid when i first made
my collection. After researching, i found out to inherit from IList, and it
fixed it. But apparently the Repeater does its databinding differently than
the DataGrid?

Can anyone explain what the Repeater needs differently than the Datagrid in
order to bind to a custom collection??

Thanks in advance,
- Arthur Dent.


 
Reply With Quote
 
 
 
 
Karl Seguin
Guest
Posts: n/a
 
      19th Oct 2004
You might want to consider having your base class inherit from
CollectionBase which will give you all the necessary flexability (not to
mention allow you to bind to everything).

Also, try the following syntax in your repeater:

<%# ((LineItem)Container.DataItem).Quantity %>
or in vb
<%# ctype(Container.DataItem, LineItem).Quantity %>

not sure if it'll sovle the problem though....

you'll likely need to import the namespace of LineItem in your page with:
<%@ Import Namespace="NamespaceContainerLineItem" %>

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


"A Traveler" <hitchhikersguideto-(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
> I have a custom collection class i wrote, LineItemsCollection, which is a
> strongly typed collection of objects of my LineItem class.
> The LineItem class is a simple class with just a couple properties,

ProdID,
> Description, Quantity and UPC. 3 strings and a long.
> The LineItemsCollection class inherits from
> System.Collections.Specialized.NameObjectCollectionBase.
> It also implements both IEnumerable and IList.
>
> I can bind a DataGrid to my collection with no problem. In the
> ItemCreated/ItemDataBound, the value of e.Item.DataItem is properly

returned
> as a LineItem object. So i can do <%#
> DataBinder.Eval(Container,"DataItem.Quantity") %> and get back a quantity.
>
> However, if i try to bind to a Repeater, and i do the same thing, i get an
> error "DataBinder.Eval: 'System.String' does not contain a property with

the
> name Quantity." I had had this problem with the datagrid when i first made
> my collection. After researching, i found out to inherit from IList, and

it
> fixed it. But apparently the Repeater does its databinding differently

than
> the DataGrid?
>
> Can anyone explain what the Repeater needs differently than the Datagrid

in
> order to bind to a custom collection??
>
> Thanks in advance,
> - Arthur Dent.
>
>



 
Reply With Quote
 
A Traveler
Guest
Posts: n/a
 
      19th Oct 2004
Yeah, that worked. I changed it to CollectionBase instead of
NameObjectCollectionBase, and that apparently fixed it. Im not quite sure
why though, because if i look at all the interfaces and bases in the
objectbrowser, its all the same. At any rate it works now.

I didnt want to do a hard-coded cast in the repeater code simply to keep it
generic and usable for other collection types.

Thanks.


"Karl Seguin" <karl REMOVE @ REMOVE openmymind REMOVEMETOO . ANDME net>
wrote in message news:(E-Mail Removed)...
> You might want to consider having your base class inherit from
> CollectionBase which will give you all the necessary flexability (not to
> mention allow you to bind to everything).
>
> Also, try the following syntax in your repeater:
>
> <%# ((LineItem)Container.DataItem).Quantity %>
> or in vb
> <%# ctype(Container.DataItem, LineItem).Quantity %>
>
> not sure if it'll sovle the problem though....
>
> you'll likely need to import the namespace of LineItem in your page with:
> <%@ Import Namespace="NamespaceContainerLineItem" %>
>
> Karl
>
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/
>
>
> "A Traveler" <hitchhikersguideto-(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> Hi,
>>
>> I have a custom collection class i wrote, LineItemsCollection, which is a
>> strongly typed collection of objects of my LineItem class.
>> The LineItem class is a simple class with just a couple properties,

> ProdID,
>> Description, Quantity and UPC. 3 strings and a long.
>> The LineItemsCollection class inherits from
>> System.Collections.Specialized.NameObjectCollectionBase.
>> It also implements both IEnumerable and IList.
>>
>> I can bind a DataGrid to my collection with no problem. In the
>> ItemCreated/ItemDataBound, the value of e.Item.DataItem is properly

> returned
>> as a LineItem object. So i can do <%#
>> DataBinder.Eval(Container,"DataItem.Quantity") %> and get back a
>> quantity.
>>
>> However, if i try to bind to a Repeater, and i do the same thing, i get
>> an
>> error "DataBinder.Eval: 'System.String' does not contain a property with

> the
>> name Quantity." I had had this problem with the datagrid when i first
>> made
>> my collection. After researching, i found out to inherit from IList, and

> it
>> fixed it. But apparently the Repeater does its databinding differently

> than
>> the DataGrid?
>>
>> Can anyone explain what the Repeater needs differently than the Datagrid

> in
>> order to bind to a custom collection??
>>
>> Thanks in advance,
>> - Arthur Dent.
>>
>>

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Collection problems (create Collection object, add data to collection, bind collection to datagrid) Øyvind Isaksen Microsoft ASP .NET 1 18th May 2007 10:24 AM
Collection problems (create Collection object, add data to collection, bind collection to datagrid) Øyvind Isaksen Microsoft Dot NET 1 18th May 2007 10:24 AM
Cant bind Repeater to Custom Collection A Traveler Microsoft ASP .NET 2 19th Oct 2004 04:24 PM
Binding Repeater to custom object collection Weston Weems Microsoft ASP .NET 1 30th Sep 2004 08:12 PM
Fill a combo box from collection, but bind to a custom class? Mike Hofer Microsoft Dot NET Framework Forms 1 25th Sep 2003 04:27 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 03:37 PM.