Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[asp.net]Compositecontrol verdwijnt uit Collection in IE

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22
We hebben hier een raar probleem, wat ogenschijnlijk alleen in Internet Explorer voorkomt.

Stel je de volgende class voor:
C#:
1
2
3
4
5
public class tdLookUpEdit : CompositeControl, 
                IControl, INamingContainer, IPostBackDataHandler
{
   //methods, events etc.
}

Hierin staan uiteraard Events, Methods, Properties, DesignTime attributen etcetera vermeld. Zodra we een postback triggeren
C#:
1
2
3
4
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
     //handle
}

Dan zou de postCollection het control tdLookupEdit moeten bevatten. In FireFox werkt dit gewoon prima, alleen is in IE het control in de betreffende collection niet te vinden.

Het vreemde is, zoals vermeld, dat dit verschijnsel alleen in IE voorkomt.

Quote van mijn collega
Een custom control, inherit van Control, implement INaimingContainer en implements IPostbackDataHandler.

In de override CreateChildControls wordt de control opgebouwd, met o.a. een textbox en een hiddenfield.

Op de OnInit wordt Page.RegisterRequiresPostBack(this); aangeroepen.
Overal wordt gebruikt gemaakt van EnsureChildControls, maar toch is in IE (7) in de IPostbackDataHandler.LoadPostBackData postDataKey leeg. En in FF is deze key wel gevuld.
Edit:
Nog even 2 verduidelijkende screenshots erbij.
In IE:
Afbeeldingslocatie: http://tweakers.net/ext/f/iYO5MWDIZsX5a2dv9fDd9riq/full.png
In Fx:
Afbeeldingslocatie: http://tweakers.net/ext/f/RG7v1fKAYSl2bd5987vyKTh8/full.png
In het 2e screenshot zie je dat AllKeys 4 items meer bevat.

[ Voor 42% gewijzigd door TeeDee op 25-06-2008 14:15 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je collega heeft het over IE7, maar is het probleem ook aanwezig met IE 5.5 of IE6? Als ipv een HiddenField control de betreffende waarde direct naar de ViewState wordt weggeschreven, is deze in IE(7) dan wel aanwezig in de postback?

Kan er mogelijk een WebControlAdaptor roet in het eten gooien omdat deze de browser niet herkent? Staat het hidden control ook in de html source? Als je de IPostbackDataHandler interface weg laat bij de control, zet asp.net dan zelf de value van de hidden fields of is deze dan ook leeg?

If it isn't broken, fix it until it is..


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22
Niemand_Anders schreef op woensdag 25 juni 2008 @ 15:31:
Je collega heeft het over IE7, maar is het probleem ook aanwezig met IE 5.5 of IE6?
Dat kunnen we nu niet traceren, maar laten we er nu even voor het gemak vanuit gaan dat het in IE6 (IE5.5. doen we toch echt niks meer mee) ook zo is.
Als ipv een HiddenField control de betreffende waarde direct naar de ViewState wordt weggeschreven, is deze in IE(7) dan wel aanwezig in de postback?
Dat gaan we nu even testen/proberen, alleen de eerste reactie was "dan gebeuren er hele andere rare dingen". Wat, kom ik zo spoedig mogelijk op terug.
Kan er mogelijk een WebControlAdaptor roet in het eten gooien omdat deze de browser niet herkent?
In het eigen control niet. Mogelijk in de rest van de applicatie wel.
Staat het hidden control ook in de html source?
Het control is gewoon terug te vinden in de html source. Alleen de value van het hiddenfield is weg.
Als je de IPostbackDataHandler interface weg laat bij de control, zet asp.net dan zelf de value van de hidden fields of is deze dan ook leeg?
Dat ga ik straks nog even testen.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

TeeDee schreef op woensdag 25 juni 2008 @ 15:40:
Het control is gewoon terug te vinden in de html source. Alleen de value van het hiddenfield is weg.
Is de value ook in de html source leeg of alleen in de viewstate/code-behind? Dit even om misverstanden te voorkomen ;-)

If it isn't broken, fix it until it is..


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22
We hebben in ieder geval de boosdoener. Zodra de property Enabled op false werd gezet, wordt het Custom control uit de Controlcollectie gehaald, wederom alleen in IE. Bij een Enabled op true is er niks aan de hand.

Bovenstaand issue is natuurlijk iets om uit te zoeken en/of Google materiaal.

Edit: en ik hoor een flinke vloek achter me. Nu gaat er een ander, weliswaar standaard, control onderuit. We gaan nog even verder zoeken.

[ Voor 18% gewijzigd door TeeDee op 25-06-2008 16:20 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Zijn jullie inmiddels al wat wijzer waarom dat andere control nu verdwijnt?

btw: Waarom wordt een HiddenField op disabled gezet? Ik zie daar niet 1, 2, 3 het nut van in. Textboxen, dropdowns, etc kan ik nog wel begrijpen, maar een HiddenField is readonly en daarmee by nature eigenlijk al gedisabled.

If it isn't broken, fix it until it is..


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22
Niemand_Anders schreef op donderdag 26 juni 2008 @ 08:55:
Zijn jullie inmiddels al wat wijzer waarom dat andere control nu verdwijnt?
Nope. ;) Wel een puntje van aandacht.
btw: Waarom wordt een HiddenField op disabled gezet? Ik zie daar niet 1, 2, 3 het nut van in. Textboxen, dropdowns, etc kan ik nog wel begrijpen, maar een HiddenField is readonly en daarmee by nature eigenlijk al gedisabled.
Er is een method IsEnabled(bool). Hierin worden alle elementen op enabled of disabled gezet. Ook het custom composite control werd hierin meegenomen. De reden is me nog niet duidelijk. Maar het kan een soort van view en edit state zijn.

Het betreft een Composite control bestaande uit een hiddenfield, textbox en 2 imagebuttons. Een Selectedvalue en SelectedText werden niet in de viewstate gezet omdat achteraf gezien een andere pagina met het control onderuit ging. Dit hebben we uiteindelijk opgelost door een Page.IsCallBack af te vangen.

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1