Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / February 2006

Tip: Looking for answers? Try searching our database.

Custom control within repeater with custom object binding - .net 1

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Jaybuffet - 16 Feb 2006 05:33 GMT
my aspx has something like this

<asp:Repeater id="Repeater1" runat="server">
 <ItemTemplate>
    <mycontrol:ctl id="ctlId" obj='<%# Container.DataItem %>'
showItem="true"/>
 </ItemTemplate>
/asp:Repeater>

The DataSource for this Repeater is a CollectionBase of objects and is
assigned and bound on Page_Load.

Now I have a Calendar control that fires a SelectionChanged.  I want that to
crate a new Collection of objects based on the selected date and rebound.  
However it doesn't seem to keep the Container.DataItem.  The control shows a
null object however the static fields are passed (i.e. the showPass shows
"true" when debugging).

What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 16 Feb 2006 05:46 GMT
Let me clarify.. my SelectionChanged method has

db = new dbHelper();
Repeater1.DataSource = db.GetObjects();
Repeater1.DataBind()

This doesn't work.

> my aspx has something like this
>
[quoted text clipped - 15 lines]
>
> What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 16 Feb 2006 15:48 GMT
I'm new to the newsgroups, do questions get answered usually here or is there
a more active site i should try posting to?

Thanks you

> my aspx has something like this
>
[quoted text clipped - 15 lines]
>
> What am I doing wrong?  Any help would be much appreciated.
Phillip Williams - 16 Feb 2006 16:43 GMT
Questions get answered fairly quickly here.  Your question however has a few
ambiguities:

1- when you say "However it doesn't seem to keep the Container.DataItem" you
did not clarify what are you referring to.  If you are referring to the
Calender that is within the RepeaterItem then what method are you using and
in which event are you attempting to get the DataItem?

2- when you say "The control shows a null object however the static fields
are passed (i.e. the showPass shows "true" when debugging)."  Which control
are you referring to that has a null value?  What are “static fields"? And
what is "showPass"?  Is "showPass" a customized property of your control?

Signature

HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com

> I'm new to the newsgroups, do questions get answered usually here or is there
> a more active site i should try posting to?
[quoted text clipped - 20 lines]
> >
> > What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 16 Feb 2006 18:05 GMT
Not sure if this is correct but this is how i ended up fixing it... don't
know if its a kludge, but it seems to work..  On initial page load it sets
the obj property twice however, but oh well.

in repeater_itemcreated i put if((e.Item.Controls.Count>1) &&
(e.Item.Controls[1].GetType().Name=="mycontrol.ascx"))  
((mycontrol)e.Item.Controls[1]).obj = (obj)e.Item.DataItem;

To answer your questions so maybe i can get a better solution:

Calendar is elsewhere on the page, not in a repeater.  There was a typo, i
didn't mean "showPass", i meant "showItem", as the code snippet has and yes
it is a property on my ascx.  

When i debug the property that sets the "obj" and I step through, the
initial page load works great.  I set the repeater datasource to a collection
of objects then bind.  When a breakpoint is set on the set method in the
"obj" property it is triggered on initial page_load, however, after i select
a date and then in calendar_selectionchanged i select a different datasource
(filtered based on the day) and then bind, it never reaches that breakpoint.

Don't know if i am explaing this correctly, but i am trying.

Thank you for your help!!

> Questions get answered fairly quickly here.  Your question however has a few
> ambiguities:
[quoted text clipped - 33 lines]
> > >
> > > What am I doing wrong?  Any help would be much appreciated.
Phillip Williams - 16 Feb 2006 19:07 GMT
If I create a demo that matches the description that you posted I do not get
the problem that you got. Here is the demo:
http://www.webswapp.com/demos/feb162006.aspx

The problem you got could have happened if you had added your custom control
to the page programmatically (instead of declaratively as you posted below).

Signature

HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com

> Not sure if this is correct but this is how i ended up fixing it... don't
> know if its a kludge, but it seems to work..  On initial page load it sets
[quoted text clipped - 58 lines]
> > > >
> > > > What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 18 Feb 2006 04:28 GMT
Was this im ASP.NET 1.1?  It seems like how i have (except the user control,
I set label values in Page_Load).  But that doesn't seem to matter because
when stepping through i never get to the Set call.

> If I create a demo that matches the description that you posted I do not get
> the problem that you got. Here is the demo:
[quoted text clipped - 65 lines]
> > > > >
> > > > > What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 18 Feb 2006 04:37 GMT
That might be the problem.  It seems on initial load in sets the obj property
and all other properties before Page_Load on the control.  But after i change
the month it then does the user controls Page_Load first, then sets the
properties.  What am i missing?

> If I create a demo that matches the description that you posted I do not get
> the problem that you got. Here is the demo:
[quoted text clipped - 65 lines]
> > > > >
> > > > > What am I doing wrong?  Any help would be much appreciated.
Jaybuffet - 20 Feb 2006 14:34 GMT
Any ideas on how to make this work with the setting of control properties in
the Page_Load.  Try adding another property to the control that is a bool and
then setting visibility on part of the control based on that property with
the object binding still.  Does it make a difference if I am doing this in C#
with codebehind.  I tried modifiying your example to

<script language="VB" runat="server">
            Private _obj as ArrayList

            Public Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
                           label1.Text = _obj.Item(0)
           Label2.Text = _obj.Item(1)
           Label3.Text = _obj.Item(2)
               
            End Sub   
   
  Public WriteOnly Property obj() As ArrayList
       Set(ByVal Value As ArrayList)
            _obj = Value

       End Set
   End Property
</script>

but it never does the Page_Load, but in my project it does.

Thanks for your help.

> If I create a demo that matches the description that you posted I do not get
> the problem that you got. Here is the demo:
[quoted text clipped - 65 lines]
> > > > >
> > > > > What am I doing wrong?  Any help would be much appreciated.
Phillip Williams - 21 Feb 2006 03:38 GMT
Ok, now I understand the problem that you have.  Let me continue to use the
sample that I put on my website to explain the issue that you described.

1- The page_load event did not fire when you added it to my sample because
the control tag of my sample had the AutoEventWireUp = "false".  To have
your modification that you added to the page_load working turn the
AutoEventWireUp to true.

2- Control load event fires after the web page Load event.  This means that
when you request the page first time, the Page_load (of the main page) is
triggered, the data is composed and the Control is databound to the
arraylist.  Then the Control's load event fires up and the repeater is
populated.

3- Upon postback, the Page_load event is fired but because I have a
condition If Not Page.IsPostBack Then do not load the data, the Control's
Load event is fired but there is no data.  Then the
Calender.SelectionChanged event is fired, it populates the data but it does
not databind because you moved the databinding to the Page_Load which
happened earlier that than the data became available.

In other words, you got to pay attention to the sequence of events.  Instead
of databinding upon page load, databind upon setting the obj value of the
child control.

---
HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com

> Any ideas on how to make this work with the setting of control properties in
> the Page_Load.  Try adding another property to the control that is a bool and
[quoted text clipped - 74 lines]
> > > > are passed (i.e. the showPass shows "true" when debugging)."  Which control
> > > > are you referring to that has a null value?  What are "static
fields"? And
> > > > what is "showPass"?  Is "showPass" a customized property of your control?
> > > >
[quoted text clipped - 28 lines]
> > > > > >
> > > > > > What am I doing wrong?  Any help would be much appreciated.

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.