Home All Groups Group Topic Archive Search About

Retrieving the DataItem property in DataList's ItemCommand or SelectedIndexChanged event

Author
13 Sep 2007 4:31 PM
Nathan Sokalski
I have a custom Control that I have made that contains a DataList. In either
the ItemCommand or SelectedIndexChanged event I need to retrieve a value
from the DataItem of the SelectedItem. I have tried the following two
techniques:

Private Sub datProductList_ItemCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataListCommandEventArgs) Handles
datProductList.ItemCommand
    Me.selectedproduct = CInt(e.Item.DataItem("productid"))
End Sub

Private Sub datProductList_SelectedIndexChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles datProductList.SelectedIndexChanged
    Me.selectedproduct = CInt(CType(sender,
DataList).SelectedItem.DataItem("productid"))
End Sub

Both attempts returned DataItem as Nothing. How can I get the value I need?
Am I forgetting something in my customcontrol? Am I supposed to be using
some other technique? Thanks.
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/

Author
13 Sep 2007 4:45 PM
Teemu Keiski
Hi,

DataItem is non-null only in ItemDataBound e.g when dataBind() is called,
and list is being databound. But if you need the id, you can use DataKeys
for that. E.g basically set DataKeyField="productid" on the DataList

Then in ItemCommand

Me.selectedproduct = CInt( datProductList.DataKeys( e.Item.ItemIndex ) )

--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net


Show quote
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in message
news:Oj%23iIOi9HHA.4712@TK2MSFTNGP04.phx.gbl...
>I have a custom Control that I have made that contains a DataList. In
>either the ItemCommand or SelectedIndexChanged event I need to retrieve a
>value from the DataItem of the SelectedItem. I have tried the following two
>techniques:
>
> Private Sub datProductList_ItemCommand(ByVal source As Object, ByVal e As
> System.Web.UI.WebControls.DataListCommandEventArgs) Handles
> datProductList.ItemCommand
>    Me.selectedproduct = CInt(e.Item.DataItem("productid"))
> End Sub
>
> Private Sub datProductList_SelectedIndexChanged(ByVal sender As Object,
> ByVal e As System.EventArgs) Handles datProductList.SelectedIndexChanged
>    Me.selectedproduct = CInt(CType(sender,
> DataList).SelectedItem.DataItem("productid"))
> End Sub
>
> Both attempts returned DataItem as Nothing. How can I get the value I
> need? Am I forgetting something in my customcontrol? Am I supposed to be
> using some other technique? Thanks.
> --
> Nathan Sokalski
> njsokal***@hotmail.com
> http://www.nathansokalski.com/
>

AddThis Social Bookmark Button