[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Sergio E.

8/19/2007 9:02:00 PM

Hello, I am extending a webcontrol, and I need to generate an array of
objects of type dropdownlist, whose event selectedindexchanged must fires an
own method called Cbo_SelectedIndexChanged that has the same signature of
selectedindexchanged of a normal dropdownlist. I already tried to add the
handler to them with addhandler but the event does not go off. I already
debug it line by line and the first timethe page with the control draws
correctly, dropdownlists fill correctly but when changing some value of any
of them it does not work, the method never is reached. I don't know if it is
because I don't defined the withevents modifier for each dropdownlist, but
the compiler gives me an error if I do "protected withevents cbos() as
dropdownlist" and I don't know how add to it when it's in an array.

The source code involved is this:

public class myExtendedPanel
inherits panel
protected cbos() as dropdownlist

private sub GenerateCbos(byval maxcbos as integer)
redim me.cbos(0 to maxcbos)
for i as integer = 0 to maxcbos
me.cbos(i) = new dropdownlist()
me.cbos(i).id="LocalCbo"+i.tostring()
me.cbos(i).datasource = me.dts(i)
me.cbos(i).datatextfield="colText"
me.cbos(i).datavaluefield="colId"
me.cbos(i).autopostback=true
me.cbos(i).enableviewstate=true
Dim eh As EventHandler = New EventHandler(AddressOf
Me.Cbo_SelectedIndexChanged)
AddHandler Me.ddls(i).SelectedIndexChanged, eh
'AddHandler ddl.SelectedIndexChanged, AddressOf Me.Cbo_SelectedIndexChanged
' it don't work too
me.cbos(i).databind()
me.cbos(i).selectedvalue=me.selvals(i)
me.controls.add(me.cbos(i))
next
end sub


Protected Sub Cbo_SelectedIndexChanged(ByVal sender As Object, ByVal e As
EventArgs)
'Here goes the code to execute, by now i use a test
response.write(me.cbos(0).selectedvalue)
'this method hasn't reached
end sub
end class


What I'm doing wrong?
Thank you!
--
Greetings,
Sergio E.



2 Answers

Nathan Sokalski

9/10/2007 2:09:00 AM

0

One thing that I am noticing is that you do not declare Me.ddls anywhere
(the object you use in the AddHandler statement). Also, it looks to me like
you are not very experienced in writing custom controls; by this I am
referring to the fact that you are not overriding the methods defined in the
WebControl class that are normally overridden in custom controls. For
example, CreateChildControls. For more information see the documentation.
Also, a great book with plenty of simple yet complete examples that are
explained in much detail is ASP.NET 2.0 Unleashed by Stephen Walther:

http://www.amazon.com/ASP-NET-2-0-Unleashed-Stephen-Walther/dp/0672328232/ref=sr_11_1/103-3352937-2405450?ie=UTF8&qid=1189389819&a...

Another suggestion of mine, based on your code, would be to not inherit from
the Panel control, but from the WebControl. Assuming you are not using any
of the capabilities unique to the Panel, your control may be more efficient
if you inherit from WebControl. Good Luck!
--
Nathan Sokalski
njsokalski@hotmail.com
http://www.nathansok...

"Sergio E." <gruporemp[ARROBA]hotmail.com> wrote in message
news:epgAdRq4HHA.5880@TK2MSFTNGP03.phx.gbl...
> Hello, I am extending a webcontrol, and I need to generate an array of
> objects of type dropdownlist, whose event selectedindexchanged must fires
> an own method called Cbo_SelectedIndexChanged that has the same signature
> of selectedindexchanged of a normal dropdownlist. I already tried to add
> the handler to them with addhandler but the event does not go off. I
> already debug it line by line and the first timethe page with the control
> draws correctly, dropdownlists fill correctly but when changing some value
> of any of them it does not work, the method never is reached. I don't know
> if it is because I don't defined the withevents modifier for each
> dropdownlist, but the compiler gives me an error if I do "protected
> withevents cbos() as dropdownlist" and I don't know how add to it when
> it's in an array.
>
> The source code involved is this:
>
> public class myExtendedPanel
> inherits panel
> protected cbos() as dropdownlist
>
> private sub GenerateCbos(byval maxcbos as integer)
> redim me.cbos(0 to maxcbos)
> for i as integer = 0 to maxcbos
> me.cbos(i) = new dropdownlist()
> me.cbos(i).id="LocalCbo"+i.tostring()
> me.cbos(i).datasource = me.dts(i)
> me.cbos(i).datatextfield="colText"
> me.cbos(i).datavaluefield="colId"
> me.cbos(i).autopostback=true
> me.cbos(i).enableviewstate=true
> Dim eh As EventHandler = New EventHandler(AddressOf
> Me.Cbo_SelectedIndexChanged)
> AddHandler Me.ddls(i).SelectedIndexChanged, eh
> 'AddHandler ddl.SelectedIndexChanged, AddressOf
> Me.Cbo_SelectedIndexChanged ' it don't work too
> me.cbos(i).databind()
> me.cbos(i).selectedvalue=me.selvals(i)
> me.controls.add(me.cbos(i))
> next
> end sub
>
>
> Protected Sub Cbo_SelectedIndexChanged(ByVal sender As Object, ByVal e As
> EventArgs)
> 'Here goes the code to execute, by now i use a test
> response.write(me.cbos(0).selectedvalue)
> 'this method hasn't reached
> end sub
> end class
>
>
> What I'm doing wrong?
> Thank you!
> --
> Greetings,
> Sergio E.
>
>
>


Sergio E.

9/11/2007 8:17:00 PM

0

thanks for the information, i'll try to get that book..

greetings
Sergio E


"Nathan Sokalski" <njsokalski@hotmail.com> escribió en el mensaje
news:OZ$UM%2308HHA.2208@TK2MSFTNGP06.phx.gbl...
> One thing that I am noticing is that you do not declare Me.ddls anywhere
> (the object you use in the AddHandler statement). Also, it looks to me
> like you are not very experienced in writing custom controls; by this I am
> referring to the fact that you are not overriding the methods defined in
> the WebControl class that are normally overridden in custom controls. For
> example, CreateChildControls. For more information see the documentation.
> Also, a great book with plenty of simple yet complete examples that are
> explained in much detail is ASP.NET 2.0 Unleashed by Stephen Walther:
>
> http://www.amazon.com/ASP-NET-2-0-Unleashed-Stephen-Walther/dp/0672328232/ref=sr_11_1/103-3352937-2405450?ie=UTF8&qid=1189389819&a...
>
> Another suggestion of mine, based on your code, would be to not inherit
> from the Panel control, but from the WebControl. Assuming you are not
> using any of the capabilities unique to the Panel, your control may be
> more efficient if you inherit from WebControl. Good Luck!
> --
> Nathan Sokalski
> njsokalski@hotmail.com
> http://www.nathansok...
>
> "Sergio E." <gruporemp[ARROBA]hotmail.com> wrote in message
> news:epgAdRq4HHA.5880@TK2MSFTNGP03.phx.gbl...
>> Hello, I am extending a webcontrol, and I need to generate an array of
>> objects of type dropdownlist, whose event selectedindexchanged must fires
>> an own method called Cbo_SelectedIndexChanged that has the same signature
>> of selectedindexchanged of a normal dropdownlist. I already tried to add
>> the handler to them with addhandler but the event does not go off. I
>> already debug it line by line and the first timethe page with the control
>> draws correctly, dropdownlists fill correctly but when changing some
>> value of any of them it does not work, the method never is reached. I
>> don't know if it is because I don't defined the withevents modifier for
>> each dropdownlist, but the compiler gives me an error if I do "protected
>> withevents cbos() as dropdownlist" and I don't know how add to it when
>> it's in an array.
>>
>> The source code involved is this:
>>
>> public class myExtendedPanel
>> inherits panel
>> protected cbos() as dropdownlist
>>
>> private sub GenerateCbos(byval maxcbos as integer)
>> redim me.cbos(0 to maxcbos)
>> for i as integer = 0 to maxcbos
>> me.cbos(i) = new dropdownlist()
>> me.cbos(i).id="LocalCbo"+i.tostring()
>> me.cbos(i).datasource = me.dts(i)
>> me.cbos(i).datatextfield="colText"
>> me.cbos(i).datavaluefield="colId"
>> me.cbos(i).autopostback=true
>> me.cbos(i).enableviewstate=true
>> Dim eh As EventHandler = New EventHandler(AddressOf
>> Me.Cbo_SelectedIndexChanged)
>> AddHandler Me.ddls(i).SelectedIndexChanged, eh
>> 'AddHandler ddl.SelectedIndexChanged, AddressOf
>> Me.Cbo_SelectedIndexChanged ' it don't work too
>> me.cbos(i).databind()
>> me.cbos(i).selectedvalue=me.selvals(i)
>> me.controls.add(me.cbos(i))
>> next
>> end sub
>>
>>
>> Protected Sub Cbo_SelectedIndexChanged(ByVal sender As Object, ByVal e As
>> EventArgs)
>> 'Here goes the code to execute, by now i use a test
>> response.write(me.cbos(0).selectedvalue)
>> 'this method hasn't reached
>> end sub
>> end class
>>
>>
>> What I'm doing wrong?
>> Thank you!
>> --
>> Greetings,
>> Sergio E.
>>
>>
>>
>
>