Home All Groups Group Topic Archive Search About

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

Author
21 May 2006 2:17 AM
Nathan Sokalski
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
njsokal***@hotmail.com
http://www.nathansokalski.com/

Author
21 May 2006 4:33 AM
Cor Ligthert [MVP]
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

Show quoteHide quote
"Nathan Sokalski" <njsokal***@hotmail.com> schreef in bericht
news:OI4c3yHfGHA.5104@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
> njsokal***@hotmail.com
> http://www.nathansokalski.com/
>
Author
21 May 2006 5:15 AM
Nathan Sokalski
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
njsokal***@hotmail.com
http://www.nathansokalski.com/

Show quoteHide quote
"Cor Ligthert [MVP]" <notmyfirstn***@planet.nl> wrote in message
news:uhje99IfGHA.3488@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" <njsokal***@hotmail.com> schreef in bericht
> news:OI4c3yHfGHA.5104@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
>> njsokal***@hotmail.com
>> http://www.nathansokalski.com/
>>
>
>
Author
21 May 2006 7:03 AM
Cor Ligthert [MVP]
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

Show quoteHide quote
"Nathan Sokalski" <njsokal***@hotmail.com> schreef in bericht
news:e4RNGWJfGHA.3456@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
> njsokal***@hotmail.com
> http://www.nathansokalski.com/
>
> "Cor Ligthert [MVP]" <notmyfirstn***@planet.nl> wrote in message
> news:uhje99IfGHA.3488@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" <njsokal***@hotmail.com> schreef in bericht
>> news:OI4c3yHfGHA.5104@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
>>> njsokal***@hotmail.com
>>> http://www.nathansokalski.com/
>>>
>>
>>
>
>
Author
21 May 2006 8:29 AM
Eliyahu Goldin
Why don't you use rather the PreRender event, where all items and the Items
collection are already fully built?

Eliyahu

Show quoteHide quote
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in message
news:OI4c3yHfGHA.5104@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
> njsokal***@hotmail.com
> http://www.nathansokalski.com/
>
Author
21 May 2006 5:07 PM
Nathan Sokalski
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
njsokal***@hotmail.com
http://www.nathansokalski.com/

Show quoteHide quote
"Eliyahu Goldin" <removemeegol***@monarchmed.com> wrote in message
news:OS4GmhKfGHA.1260@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" <njsokal***@hotmail.com> wrote in message
> news:OI4c3yHfGHA.5104@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
>> njsokal***@hotmail.com
>> http://www.nathansokalski.com/
>>
>
>