[C# Winform] Geen html opening tag bij innerhtml mogelijk

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • doak
  • Registratie: Oktober 2001
  • Niet online
Ik heb een Winform met een webbrowser control erop. In de webbrowser wordt een intranet site geladen waarbij een item in de pulldown geselecteerd moet worden. Eerste vraag, is dit mogelijk?

Ik had zelf al dit gemaakt om het te testen:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
            HtmlElementCollection tagsCollection = webBrowser1.Document.GetElementsByTagName("select");
            foreach (HtmlElement currentTag in tagsCollection)
            {
                    // Hier komt nog een if statement om niet alles af te gaan, nu niet relevant

                    // Set innerhtml text
                    currentTag.InnerHtml = "<option value=\"0\">-Geen selectie-</option>" +
                                            "<option value=\"1\">Normal</option>" +
                                            "<option value=\"2\" selected=\"selected\">Emergency</option>";

                    MessageBox.Show(currentTag.InnerHtml.ToString());
            }


Als ik dit uitvoer krijg ik als message dit:

Afbeeldingslocatie: http://www.xs4all.nl/~klauwvd/error.png

Het pakt de opening tag niet mee. Vraag 2 Watskebeurt?

Ideeen/oplossingen zijn zeer welkom. Denk zelf dat het alternatief sendkeys wordt.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
doak schreef op donderdag 15 april 2010 @ 01:48:
waarbij een item in de pulldown geselecteerd moet worden. Eerste vraag, is dit mogelijk?
Define "geselecteerd moet worden". Door wie? Hoe?

Je code lijkt juist de opties in een dropdown te 'vervangen' (hoewel ik sowieso niet met innerHTML zou klooien maar gewoon het DOM zou gebruiken).

En is het niet veel handiger om gewoon die dropdown server-side af te handelen en dan dus gewoon je browsercontrol gewoon .../intranet/page.aspx?option=1 of ../intranet/page.aspx?option=2 etc. te laten aanroepen? Dat is nog altijd 1000 keer beter dan rommelen met innerhtml of sendkeys :X

[ Voor 50% gewijzigd door RobIII op 15-04-2010 02:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19:28

Haan

dotnetter

Dit is inderdaad een beetje dubieuze constructie.. Waarom moet die intranet site in een Forms applicatie geopend worden, en niet gewoon in de browser?

offtopic:
En een wijs man zei ooit "Debuggen met messageboxes is zoooo 1992" ;)

[ Voor 34% gewijzigd door Haan op 15-04-2010 08:12 ]

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

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

Niemand_Anders

Dat was ik niet..

Je moet in plaats van InnerHtml OuterHtml gebruiken. OuterHTML bevat ook de tags (openings tags) van het ouder element. InnerHtml bevat alleen de childeren (content) van de tag. Is toch wel basis DOM kennis..

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


Acties:
  • 0 Henk 'm!

  • doak
  • Registratie: Oktober 2001
  • Niet online
RobIII schreef op donderdag 15 april 2010 @ 02:03:
[...]

Define "geselecteerd moet worden". Door wie? Hoe?

Je code lijkt juist de opties in een dropdown te 'vervangen' (hoewel ik sowieso niet met innerHTML zou klooien maar gewoon het DOM zou gebruiken).

En is het niet veel handiger om gewoon die dropdown server-side af te handelen en dan dus gewoon je browsercontrol gewoon .../intranet/page.aspx?option=1 of ../intranet/page.aspx?option=2 etc. te laten aanroepen? Dat is nog altijd 1000 keer beter dan rommelen met innerhtml of sendkeys :X
Door wie:de applicatie, hoe: dat was de vraag. Ik wilde gewoon een item uit een html dropdown selecteren ofwel default zetten. Kan op server side niks aanpassen.
Haan schreef op donderdag 15 april 2010 @ 08:10:
Dit is inderdaad een beetje dubieuze constructie.. Waarom moet die intranet site in een Forms applicatie geopend worden, en niet gewoon in de browser?
Omdat de Forms een collectie is van meerdere applicaties. Via de url kon ik de waardes niet meegeven.
Niemand_Anders schreef op donderdag 15 april 2010 @ 08:48:
Je moet in plaats van InnerHtml OuterHtml gebruiken. OuterHTML bevat ook de tags (openings tags) van het ouder element. InnerHtml bevat alleen de childeren (content) van de tag. Is toch wel basis DOM kennis..
Jij mag dat best basis DOM kennis vinden maar ik ken heel DOM niet. Je kan niet verwachten dat iedereen op hetzelfde niveau zit. Ik vraag het juist omdat ik niet verder kom. Ondanks dat ben ik toch in de goede richting gestuurd. Dom was het keyword. Denk dat ik met deze website wel verder kom.

Bedankt allen ! _/-\o_

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:53

crisp

Devver

Pixelated

Uiteindelijk is dit gewoon een (bekende) bug in IE: BUG: Internet Explorer Fails to Set the innerHTML Property of the Select Object

Intentionally left blank

Pagina: 1