SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Befüllen eines Listenfeldes mit JavaScript

Unbeantwortet Dieser Beitrag hat 4 Antworten

Ohne Rang
3 Beiträge
Keks erstellt 14 Feb. 2014 12:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

ich habe vor einiger Zeit im SharePoint 2007 mit dem folgenden Script, das ich unter http://sharepoint.stackexchange.com/questions/36670/how-can-you-have-multiple-filldefaultvalues-scripts-operating-on-one-page gefunden habe, einen Wert in der URL [[....]/NewForm.aspx?Ticket=12345] übergeben, der direkt in das Feld "Ticket" in meiner SharePoint Liste übergeben wird:

   <script type="text/javascript">

_spBodyOnLoadFunctionNames.push("fillDefaultValues");

function fillDefaultValues() {
  var qs = location.search.substring(1, location.search.length);
  var args = qs.split("&");
  var vals = new Object();
  for (var i=0; i < args.length; i++) {
    var nameVal = args[i].split("=");
    var temp = unescape(nameVal[1]).split('+');
    nameVal[1] = temp.join(' ');
    vals[nameVal[0]] = nameVal[1];
  } 
  setLookupFromFieldName("Ticket", vals["Ticket"]);
}

function setLookupFromFieldName(fieldName, value) {
  if (value == undefined) return;
  var theSelect = getTagFromIdentifierAndTitle("select","Lookup",fieldName);

  if (theSelect == null) {
    var theInput = getTagFromIdentifierAndTitle("input","",fieldName);
    ShowDropdown(theInput.id);
    var opt=document.getElementById(theInput.opt);
    setSelectedOption(opt, value);
    OptLoseFocus(opt);
  } else {
    setSelectedOption(theSelect, value);
  }
}

function setSelectedOption(select, value) {
  var opts = select.options;
  var l = opts.length;
  if (select == null) return;
  for (var i=0; i < l; i++) {
    if (opts[i].innerText == value) {
      select.selectedIndex = i;
      return true;
    }
  }
  return false;
}

function getTagFromIdentifierAndTitle(tagName, identifier, title) {
  var len = identifier.length;
  var tags = document.getElementsByTagName(tagName);
  for (var i=0; i < tags.length; i++) {
    var tempString = tags[i].id;
    if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
      return tags[i];
    }
  }
  return null;
}

</script>

Mittlerweise setzen wir den SharePoint 2010 ein und ich wollte das gleiche Script für eine ähnliche Umsetzung nochmals verwenden. Es klappt jedoch nicht. Hat jemand eine Idee was ich anpassen muss damit es auch im SP 2010 funktioniert?

Für eure Hilfe wäre ich sehr dankbar.

Viele Grüße

Keks

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Feb. 2014 13:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine genaue Anleitung habe ich gerade nicht parat, aber ein paar Tips für eigene Recherchen: es reicht nicht, den Wert des DropDowns zu setzen. Es gibt ein zusätzliches hidden-Element und der Wert muß auch noch dort rein. Die ID des Hidden findet sich in einem Attribut des dropDowns. Schaue es Dir einfach mal in der HTML-Quelle an.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
3 Beiträge
Keks Als Antwort am 17 Feb. 2014 15:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine schnell Antwort. Ich habe ein bisschen recherchiert, bin jedoch nicht wirklich weitergekommen. Ich bin auch leider nicht besonders fit in JavaScript.

Schade...

Ohne Rang
221 Beiträge
MiriMar Als Antwort am 19 Feb. 2014 14:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was genau klappt denn nicht? Holt er sich den Wert nicht mehr richtig aus der URL oder befüllt er das Drop Down nicht? Könnte man testen, indem man den Wert einfach mal in ein Textfeld schreiben lässt.

Falls es am finden des Wertes aus der URl geht, ich arbeite mit folgendem Code:

 

_spBodyOnLoadFunctionNames.push("Startskript");

function

 

 

Startskript() {

document.getElementById(

 

"ctl00_m_g_b659f56e_3b0f_4fa6_a605_cb8337dc1e4a_ff21_ctl00_ctl00_TextField").value = GetUrlKeyValue('Lieferant', false);}

Mit dieser einen Zeile hole ich mir den Wert, der in der URL steht (muss dann aber als '&Lieferant=Lieferant1' drinstehen, aber das tuts ja laut deinem bisherigen Code eh) und setze ein Textfeld auf den Wert. Ich bin mir auch relativ sicher, dass SP2010 die Funktion GetUrlKeyValue() mitliefert, man also keine extra js-Bibliothek einbinden muss! 

Ich habe allerdings noch nicht ausprobiert, ob man das genauso leicht mit einem Drop-Down hinbekommt, vielleicht könnte man da eine Kombination verwenden?

 

Ohne Rang
3 Beiträge
Keks Als Antwort am 26 Feb. 2014 09:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für eure Hilfe.

Ich habe mittlerweile einen anderen Weg gefunden der ohne Java Script auskommt.

Grüße

Keks