Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[javascript] Sharepoint veld verbergen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil op een sharepoint pagina een veld verbergen. Een manier om dat te doen is met Javascript. Na een zoektocht van een paar dagen ben ik dichtbij de oplossing maar op één of andere manier werkt het niet.

Dit is de code die ik nu gebruik.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
_spBodyOnLoadFunctionNames.push("hideFields");

function hideFields() {
    var control = findacontrol("Discussie");
    control.parentNode.parentNode.style.display="none";
}

function findacontrol(FieldName) {
    var arr = document.getElementsByTagName("!");
   // get all comments
   for (var i=0;i < arr.length; i++ )
   {
      // now match the field name
      if (arr[i].innerHTML.indexOf(FieldName) > 0)
      {         return arr[i];      }
   }
}   
</script>


Ik staar nu al een tijd naar de code maar kan de fout niet ontdekken.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 25 april 2008 @ 12:02:
maar op één of andere manier werkt het niet.
En wat gebeurt er dan? Helemaal niets? Krijg je een foutmelding? Heb je überhaupt al gedebugged? Of in een error-console gekeken? Wordt de functie überhaupt wel uitgevoerd/aangeroepen? Wordt control wel gevonden? Is control.parentNode.parentNode wel de juiste node? Etc.

Zie ook:
Quickstart
Kan iemand even...?
Debuggen: Hoe doe ik dat?

En daarbij: is het niet handiger om dit meteen in de CSS te regelen, of nog beter: in de template ofzo?

[ Voor 50% gewijzigd door RobIII op 25-04-2008 12:18 ]

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


Verwijderd

Topicstarter
RobIII schreef op vrijdag 25 april 2008 @ 12:15:
[...]

En wat gebeurt er dan? Helemaal niets? Krijg je een foutmelding? Heb je überhaupt al gedebugged? Of in een error-console gekeken? Wordt de functie überhaupt wel uitgevoerd/aangeroepen? Wordt control wel gevonden? Is control.parentNode.parentNode wel de juiste node? Etc.

Zie ook:
Quickstart
Kan iemand even...?
Debuggen: Hoe doe ik dat?

En daarbij: is het niet handiger om dit meteen in de CSS te regelen, of nog beter: in de template ofzo?
Er gebeurd niets, ook geen foutmelding. Indien ik de eerste functie vervang door een msgbox dan zie ik die wel dus de eerste aanroep moet goed zijn. Als ik echter een msgbox bovenin de huidige functie zet, zie ik niets....

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 25 april 2008 @ 12:21:
[...]


Er gebeurd niets, ook geen foutmelding. Indien ik de eerste functie vervang door een msgbox dan zie ik die wel dus de eerste aanroep moet goed zijn. Als ik echter een msgbox bovenin de huidige functie zet, zie ik niets....
Laat eens zien wat je dan hebt? Hoe je dat doet/test? En waarom vermeld je die info niet in je startpost en moeten wij het uit je trekken?

[ Voor 9% gewijzigd door RobIII op 25-04-2008 12:25 ]

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 18-11 23:16

TeeDee

CQB 241

Als sharepoint z'n controls net als .Net rendert (afaik wel) is het ID van het veld niet: "Discussie".
Kijk eens in de source in de browser, zet in je function 'hideFields' eens het id zoals het in de gerenderde source staat. Werkt het dan wel? Zo ja, dan klopt er inderdaad iets niet in je findacontrol.

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


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Kan je niet gewoon de CSS aanpassen van het document, of desnoods in-line CSS gebruiken?
Cascading Stylesheet:
1
2
3
4
#discussie
{
    display: none;
}
En klaar is hacking_mike, zelfs zonder JS... ;)

[ Voor 5% gewijzigd door CH4OS op 25-04-2008 12:36 ]


Verwijderd

Topicstarter
GJ-tje schreef op vrijdag 25 april 2008 @ 12:35:
Kan je niet gewoon de CSS aanpassen van het document, of desnoods in-line CSS gebruiken?
Cascading Stylesheet:
1
2
3
4
#discussie
{
    display: none;
}
En klaar is hacking_mike, zelfs zonder JS... ;)
Het lastige is dat dat met Sharepoint niet lukt. Het document wordt dynamisch opgebouwd. Natuurlijk heb ik naar eenvoudigere oplossingen gezoecht maar die zijn op het net (dus ook msdn) niet te vinden. Dit lijkt de eenvoudigste oplossing. Mijn code voeg ik in Sharepoint designer in de aspx document, volvolgens open ik in Sharepoint de pagina gebeurd er niets. Dit is de link waar ik het vandaan heb:

http://www.cleverworkarou...-using-javascript-part-1/

Verwijderd

Topicstarter
TeeDee schreef op vrijdag 25 april 2008 @ 12:29:
Als sharepoint z'n controls net als .Net rendert (afaik wel) is het ID van het veld niet: "Discussie".
Kijk eens in de source in de browser, zet in je function 'hideFields' eens het id zoals het in de gerenderde source staat. Werkt het dan wel? Zo ja, dan klopt er inderdaad iets niet in je findacontrol.
In de source staat de volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
<TD valign="top" class="ms-formbody" width="400px">
        <!-- FieldName="Discussie"
             FieldInternalName="Discussie"
             FieldType="SPFieldLookup"
          -->
<span dir="none"><select name="ctl00$m$g_ab5bc6f5_ed1a_4fb7_b3d8_b57cde6c31e8$ctl00$ctl02$ctl00$ctl01$ctl00$ctl00$ctl04$ctl00$ctl00$ctl04$ctl00$Lookup" id="ctl00_m_g_ab5bc6f5_ed1a_4fb7_b3d8_b57cde6c31e8_ctl00_ctl02_ctl00_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_ctl04_ctl00_Lookup" title="Discussie">

                </select><br/></span>
            
            
</TD>


Dus FieldName Discussie zou gevonden moeten kunnen worden.....

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 14-11 22:24
En als je eens het id van het control probeert in je JS, dus:

code:
1
ctl00_m_g_ab5bc6f5_ed1a_4fb7_b3d8_b57cde6c31e8_ctl00_ctl02_ctl00_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_ctl04_ctl00_Lookup

Hail to the king baby!


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 18-11 23:16

TeeDee

CQB 241

* TeeDee begint zich af te vragen of '!' wel een geldige tag is.

Je kan het ook anders bekijken.
In pseudo code. (als in: niet getest)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function findElement(tag,titletomatch)
{
    var controlarray = document.getElementsByTagname(tag);
    for(int i=0;i<controlarry.length;i++)
    {
        if(controlarray[i].title==titletomatch)
        {
            return controlarray[i];
        }
    }
}

function hideFields()
{
    var controltohide = findElement("select","discussie");
    controltohide.style.display='none';
}

[ Voor 3% gewijzigd door TeeDee op 25-04-2008 13:40 ]

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


Verwijderd

Topicstarter
Ik ben eruit..... Ik had één regel ge copy/paste van internet daardoor stonden quotes ``i`` in plaats van "i"

Grrr, dus uiteindelijk werkt mijn eerste code wel!!!
Pagina: 1