Bei der Entwicklung eigener SharePoint-Komponenten ist es oftmals erforderlich, dem Anwender die Auswahl einer SharePoint-Liste zu ermöglichen, um bspw. generierte Dateien abzulegen.

Im SharePoint WebCMS-Umfeld gibt es das Control “AssetUrlSelector”, welches allerdings außerhalb von Publishing Websites nicht zum Einsatz kommen sollte. Damit in Team-Websites eine entsprechende Funktionalität zur Verfügung steht, wurde in der SharePoint Client API die Funktion “LaunchPickerTreeDialog” eingeführt. Diese Funktion öffnet den “PickerTreeDialog”.

image

 

In diesem Artikel wird erläutert, wie die Funktion “LaunchPickerTreeDialog” via C#-Code aufgerufen werden kann. Dadurch ist es möglich die Funktionalität in eigenen Webpart-Komponenten zu verwendet.

In der UI-Definition der Seite oder des Controls werden zunächst zwei Controls benötigt.

  1. Ein Control (TextBox etc.), das die selektierte URL aufnehmen kann (rot umrandet)
  2. Ein Control (Button,etc.), das beim “onClick” den Dialog aufruft (orange umrandet)

image

 

Im Zweiten Schritt wird der JavaScript-Code via C# registriert.

 string scriptStr1="<script type=\"text/javascript\" src=\"/_layouts/1033/pickertreedialog.js?rev=I1jWBRvrwT5gnkg0A5u%2BXA%3D%3D\"></script>";
            if (!this.Page.ClientScript.IsClientScriptBlockRegistered("TreeLinkCode"))
            {
                this.Page.ClientScript.RegisterClientScriptBlock(typeof(UserControl), "TreeLinkCode", scriptStr1, false);
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("<script language=\"javascript\">");
            sb.Append("var rptstglocid = '" + SPHttpUtility.NoEncode(TxtReportStorageLocation.ClientID) + "';");
            sb.Append("function LaunchTargetPicker()");
            sb.Append("{ULSGhe:;");
            sb.Append("var callback = function(dest)");
            sb.Append("{ULSGhe:;");
            sb.Append("if (dest != null && dest != undefined && dest[3] != null)");
            sb.Append("document.getElementById(rptstglocid).value = dest[3];");
            sb.Append("};");
            sb.Append("LaunchPickerTreeDialog(");
            sb.Append("    'CbqPickerSelectListTitle', 'CbqPickerSelectListText',");
            sb.Append("'websListsFolders', '', '" + SPHttpUtility.UrlPathEncode(SPContext.Current.Web.Url, true) + "','', '', '', \"/_layouts/images/smt_icon.gif\", '',");
            sb.Append("callback, 'true', '');");
            sb.Append("}");
            sb.Append("</script>");

            if (!this.Page.ClientScript.IsClientScriptBlockRegistered("ListSelectionCode"))
            {
                this.Page.ClientScript.RegisterClientScriptBlock(typeof(UserControl), "ListSelectionCode", sb.ToString(), false);
            }

 

 

Dem Anwender ist es nun möglich eine Liste über die Oberfläche auszuwählen.

image

Über die selektierte Listen-URL kann programmatisch auf die Liste zugegriffen werden.

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.