467,169 Members | 1,031 Online
Bytes | Developer Community
Ask Question

Home New Posts Topics Members FAQ

Post your question to a community of 467,169 developers. It's quick & easy.

Determining whether the current item is the last one from inside ItemDataBound

I have a control that I want displayed in all items except the last one. I
figured the best way to do this was to determine whether the current item
was the last from within the ItemDataBound event using code such as the
following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items before
the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/
May 21 '06 #1
  • viewed: 3512
Share:
5 Replies
Nathan,

In almost all collection there is a count or a length telling what is the
total number of the items

The count-1 or lenght - 1 is than the index to the last.

I hope this helps,

Cor

"Nathan Sokalski" <nj********@hotmail.com> schreef in bericht
news:OI**************@TK2MSFTNGP04.phx.gbl...
I have a control that I want displayed in all items except the last one. I
figured the best way to do this was to determine whether the current item
was the last from within the ItemDataBound event using code such as the
following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items
before the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/

May 21 '06 #2
That would help, except for one thing. What collection do I use? I tried the
following two:

DataList.DataKeys.Count
DataList.Items.Count

The problem is that these collections are not completely filled until after
the ItemDataBound event has been called however many times it gets called.
To see this, add a line such as:

Response.Write(DataList.DataKeys.Count)

inside the ItemDataBound event handler, and you will see that the value is
different each time it is called, which makes it almost useless inside this
handler. I need a property or method that can tell me the number of items
before the DataBind() method is called. I thought about using the DataTable
that I use for the DataList.DataSource property, but that would require me
to create a public or session variable, which is not the ideal way to do it,
and it requires extra code. Any other ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/

"Cor Ligthert [MVP]" <no************@planet.nl> wrote in message
news:uh**************@TK2MSFTNGP02.phx.gbl...
Nathan,

In almost all collection there is a count or a length telling what is the
total number of the items

The count-1 or lenght - 1 is than the index to the last.

I hope this helps,

Cor

"Nathan Sokalski" <nj********@hotmail.com> schreef in bericht
news:OI**************@TK2MSFTNGP04.phx.gbl...
I have a control that I want displayed in all items except the last one. I
figured the best way to do this was to determine whether the current item
was the last from within the ItemDataBound event using code such as the
following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items
before the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/


May 21 '06 #3
Nathan,

I always use the datasource to get the total items.

Be aware that you take the defaultview if you use that, which by instance in
a sort becomes than dynamic.

Cor

"Nathan Sokalski" <nj********@hotmail.com> schreef in bericht
news:e4**************@TK2MSFTNGP05.phx.gbl...
That would help, except for one thing. What collection do I use? I tried
the following two:

DataList.DataKeys.Count
DataList.Items.Count

The problem is that these collections are not completely filled until
after the ItemDataBound event has been called however many times it gets
called. To see this, add a line such as:

Response.Write(DataList.DataKeys.Count)

inside the ItemDataBound event handler, and you will see that the value is
different each time it is called, which makes it almost useless inside
this handler. I need a property or method that can tell me the number of
items before the DataBind() method is called. I thought about using the
DataTable that I use for the DataList.DataSource property, but that would
require me to create a public or session variable, which is not the ideal
way to do it, and it requires extra code. Any other ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/

"Cor Ligthert [MVP]" <no************@planet.nl> wrote in message
news:uh**************@TK2MSFTNGP02.phx.gbl...
Nathan,

In almost all collection there is a count or a length telling what is the
total number of the items

The count-1 or lenght - 1 is than the index to the last.

I hope this helps,

Cor

"Nathan Sokalski" <nj********@hotmail.com> schreef in bericht
news:OI**************@TK2MSFTNGP04.phx.gbl...
I have a control that I want displayed in all items except the last one.
I figured the best way to do this was to determine whether the current
item was the last from within the ItemDataBound event using code such as
the following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items
before the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/



May 21 '06 #4
Why don't you use rather the PreRender event, where all items and the Items
collection are already fully built?

Eliyahu

"Nathan Sokalski" <nj********@hotmail.com> wrote in message
news:OI**************@TK2MSFTNGP04.phx.gbl...
I have a control that I want displayed in all items except the last one. I
figured the best way to do this was to determine whether the current item
was the last from within the ItemDataBound event using code such as the
following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items
before the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/

May 21 '06 #5
Thanks, I don't think that idea ever occurred to me because I have never
used the PreRender event before, but I think that the fact that the
condition is only true for one item, it is definitely more efficient.
Thanks!
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/

"Eliyahu Goldin" <re*************@monarchmed.com> wrote in message
news:OS**************@TK2MSFTNGP05.phx.gbl...
Why don't you use rather the PreRender event, where all items and the
Items collection are already fully built?

Eliyahu

"Nathan Sokalski" <nj********@hotmail.com> wrote in message
news:OI**************@TK2MSFTNGP04.phx.gbl...
I have a control that I want displayed in all items except the last one. I
figured the best way to do this was to determine whether the current item
was the last from within the ItemDataBound event using code such as the
following:
If e.Item.ItemIndex=(numberofitems-1) Then mycontrol.Enabled=False
but I cannot find a property that contains the total number of items
before the ItemDataBound event is raised. Any ideas? Thanks.
--
Nathan Sokalski
nj********@hotmail.com
http://www.nathansokalski.com/


May 21 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Big Dave | last post: by
2 posts views Thread by Mike Collins | last post: by
4 posts views Thread by =?Utf-8?B?SmFtZXMgR2V1cnRz?= | last post: by
1 post views Thread by Nathan Sokalski | last post: by
6 posts views Thread by =?Utf-8?B?U2FuZHBvaW50R3V5?= | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.