# Javascript in Sharepoint



## kk236 (7. Okt 2010)

Hallo,

ich hoffe mir kann hier jemand helfen stehe ziemlich unter Stress grade.

Ich versuche gerade im Sharepoint Server 2007 einen Button einzubauen, der Daten aus der einen Liste in eine andere kopiert (befinden sich beide auf der gleichen Seite).

Ich habe bereits das Form-Webpart angelegt und einen Button erstellt. Dann kann ich ja auf bearbeiten gehen und das Quelltextfenster öffnen.

Das steht schon von Haus aus drin:


```
<div onkeydown="javascript:if (event.keyCode == 13) _SFSUBMIT_">
				<input name="RefreshButton" type="button" value="Refresh"></div>
```

Wäre super wenn mir jemand sagen kann was ich hier reinkopieren muss um den Inhalt der einen Liste in eine zweite zu bekommen.

Danke schonmal im Voraus.

Gruß
chris


----------



## ARadauer (7. Okt 2010)

mhnn... haben deine listen ids? Ich geh mal davon aus dass du von html select listen sprichst..

klappt das?

list1 = document.getElementById('list1');
list2 = document.getElementById('list2');
for (var i = 0; i < list1.length; i++) {
        var QuellOption = list1.options_;
        list2.options[list2.length] = new Option(QuellOption.text, QuellOption.value);
}_


----------



## kk236 (7. Okt 2010)

Ich werd es gleich mal probieren.

Aber eins weiß ich nicht, wie bin ich das ein, dass er das auf meinen Button-Click macht? 
Also ich drück meinen Refresh-Button und dann soll er die Listen kopieren. 

Aber gute Frage ob Sharepointlisten solche Listen sind aber das werd ich ja gleich herausfinden.

Reicht es nicht wenn ich sage:

list1 = document.getElementById('list1');
list2 = document.getElementById('list2');

list2 = list1;

Das ist ja quasi alles was ich will, die 2. Liste zu einer Kopie der 1. Liste machen.

Vielen Dank schonmal.


----------



## ARadauer (7. Okt 2010)

kk236 hat gesagt.:


> Reicht es nicht wenn ich sage:
> ...
> list2 = list1;


nö, denke nicht, denn die referenz die gerade auf das dom element der liste2 gezeigt hat, zeigt dann auf die liste1... ich grunde passiert da nix...
Es kann aber sein, dass das elemente rüber kopieren auch anders einfacher geht.


----------



## kk236 (7. Okt 2010)

Ok ich schreib jetzt hier mal her wie ich das 1 zu 1 in meinen Sharepoint Quelltexteditor übertragen werde und du kannst mir dann ja nochmal sagen ob du das so gemeint hast oder nicht.


```
<div onkeydown="javascript:if (event.keyCode == 13) _SFSUBMIT_">

<input name="RefreshButton" type="button" value="Refresh"></div>
<script type="text/javascript"> 

list1 = document.getElementById('Bewertung');
list2 = document.getElementById('Bewertung2');

for (var i = 0; i < list1.length; i++) {
var QuellOption = list1.options[i];
list2.options[list2.length] = new Option(QuellOption.text, QuellOption.value);
} 

</script>
```

D.h. wenn ich jetzt ausführe zeigt die 2. Liste die gleichen Werte wie die 1. Liste an...

Das funktioniert aber jetzt noch nicht über den Refresh-Button oder?.


----------



## kk236 (7. Okt 2010)

fehlt da nicht irgendwo noch der Button der eingebunden wird?

Ich hab den Quelltext jetzt mal wie in meinem letzten Post eingefügt aber in der 2. Liste tut sich nix.


----------



## ARadauer (7. Okt 2010)

keine ahnung, hab noch nie mit Sharepoint gearbeitet...

aber für mich siehts falsch aus 

du musst natürlich deinem button einen event handler setzen der die funktion aufruft und du musst meinen code in eine funktion packen. Aber das sind JavaScript Grundlagen ... da kannst du dich selber einlesen...


----------



## kk236 (8. Okt 2010)

ich werd mich mal n bissl einlesen und meld mich wenn ich soweit bin...


----------



## kk236 (8. Okt 2010)

hmm soweit bin ich jetzt funktioniert aber nicht... 
irgendwo beim button is der fehler...


```
<script type="text/javascript"> 

function copyList()
{
     list1 = document.getElementById('Bewertung');
     list2 = document.getElementById('Bewertung2');

     for (var i = 0; i < list1.length; i++) 
    {
       var QuellOption = list1.options[i];
       list2.options[list2.length] = new Option(QuellOption.text,  QuellOption.value);
    }
 
     alert("Aktualisierung abgeschlossen!");

}

</script>

<div onkeydown="javascript:if (event.keyCode == 13) _SFSUBMIT_">

<input name="RefreshButton" type="button" value="Refresh" onClick=copyList()></div>
<div onkeydown="javascript:if (event.keyCode == 13) _SFSUBMIT_">
```


----------



## ARadauer (8. Okt 2010)

doch müsste klappen, wobei ich das sauberer finde:
<input name="RefreshButton" type="button" value="Refresh" onClick="javascript:copyList()">

mhn gibt das alert mal in die erste zeile deiner copyList methode... 


bei mir klappt das


```
<html>
<head>
<script type="text/javascript"> 

function copyList(){
     alert("test");
}
</script>
</head>
<body >
<input name="RefreshButton" type="button" value="Refresh" onClick="javascript:copyList()"></div>
</body>
</html>
```

Wenns nicht geht:






:lol:


----------



## kk236 (8. Okt 2010)

super cooles bild :lol:

ok problem ist der hängt in der for-schleife anscheinend in einer Endlosschleife fest...

denn wenn ich den alert oben hin kopiere dann funktioniert das ding...

wie kann ich denn zumindest mal ein objekt der liste ausgeben? damit ich zumindest mal sehe ob er objekte aus der liste gespeichert hat in der variablen...

denn da müsste ja jetzt die komplette bewertungsliste meiner lieferanten drin sein...


----------



## kk236 (8. Okt 2010)

hast du ne idee wo das problem ist?


----------



## ARadauer (8. Okt 2010)

> ok problem ist der hängt in der for-schleife anscheinend in einer Endlosschleife fest...





> hast du ne idee wo das problem ist?


klar du fügst sicher in die liste ein von der du ließt...

das klappt!


```
<html>
<head>
<script type="text/javascript"> 

function copyList(){
     alert("test");
     list1 = document.getElementById('Bewertung');
     list2 = document.getElementById('Bewertung2');

     for (var i = 0; i < list1.length; i++) 
    {
       var QuellOption = list1.options[i];
       list2.options[list2.length] = new Option(QuellOption.text,  QuellOption.value);
    }
 
     alert("Aktualisierung abgeschlossen!");

}
</script>
</head>
<body >
<input name="RefreshButton" type="button" value="Refresh" onClick="javascript:copyList()"></div>

liste 1:

<select id="Bewertung" size="3">
	<option value="1">eins</option>
	<option value="2">zwei</option>
	<option value="3">drei</option>
	<option value="4">vier</option>
</select>
liste 2:
<select id="Bewertung2" size="3">
</select>
</body>
</html>
```


----------

