Laden...

Forenbeiträge von felix Ingesamt 174 Beiträge

14.04.2011 - 22:33 Uhr

Hallo Hurby,

vielen Dank für deine Antwort. Ich bin mir noch nicht ganz sicher, ob es das ist, was ich suche.

Wenn ich ein neues Dokument aus einer SharePoint-Dokumentenbibliothek erstelle, steht im Speicherdialog ganz oben in dem Feld, in dem ich den Ordner auswählen kann, der Web-Pfad zur Dokumentenbibliothek (http://...). Und genau diesen brauche ich. Das ist allerdings nicht der Pfad, der in den Optionen unter dem Standard-Speicherort angegeben ist.

Ich werde deinen Code morgen mal testen und mich dann wieder melden 😃

13.04.2011 - 18:51 Uhr

Hallo Hurby,

Ich habe eine Frage bzg. der InvokeMember Geschichte.
Meinst du, man würde auf diesem Weg auch den Pfad herausbekommen, unter dem Word versucht, das aktuelle Dokument zu speichern? Der Dialog wäre "Dialogs[Word.WdWordDialog.wdDialogFileSaveAs]".

Hintergrund: Wenn ich ein Dokument aus einer SharePoint-Dokumentenbibliothek öffne, dann kennt Word die Web-Adresse von dieser Bibliothek. Da es kein Property gibt, aus dem diese Information ausgelesen werden kann, dachte ich, man kann sie vielleicht aus dem Speicher-Dialog direkt auslesen. Im obersten Feld steht die Web-Adresse zur Dokumentenbibliothek.

Wenn ich InvokeMember auf "Name" ausführe, wenn das Dokument noch nicht gespeicher ist, bekomme ich allerdings nur den vorgeschlagenen Name unter dem das Dokument gespeichert werden soll.

Hast du evtl. einen Vorschlag für mich?

31.03.2011 - 17:05 Uhr

Aber eine sehr mächtige ASP.NET Anwendung 😉

Jap. Da stimme ich dir zu. Ich entwickle seit einem Jahr Lösungen auf SharePoint-Basis. Das Thema ist recht komplex.

31.03.2011 - 16:19 Uhr

Richtig. Wobei für das Hinzufügen eigentlich die Methode Add zuständig ist 😃 Ist ja aber auch egal, ich habe ja gesehen dass du sowohl das Property als auch die Methode genannt hast 😉

31.03.2011 - 16:10 Uhr

Hallo Boris0815,
Das Hinzufügen funktioniert ganz einfach über die Property:

List.Add(wert)  

Über die Methode 😉

Gibt es da eine schon bestehende Möglichkeit?

Ja, du könntest z.B. eine eigene Klasse schreiben und das Interface IList implementieren. Dann hast du eine leere Add() Methode in der du deine Prüfung durchführen kannst.

31.03.2011 - 12:42 Uhr

Hallo #coder#,

SharePoint ist nichts Anderes als eine ASP.NET Anwendung. Von daher ist das auf jeden Fall ein guter Start.

11.03.2011 - 12:04 Uhr

Hallo,

die Microsoft.SharePoint.dll ist das Objekt Modell. Diese DLL kannst du nur auf dem Server nutzen. Du könntest dir aber einen WebService schreiben, den du auf der Maschine hostest, auf dem auch der SharePoint läuft. Dieser WebService kann dann auf das Objekt Modell zugreifen und somit natürlich auch die Versionierung deaktivieren.

11.03.2011 - 08:51 Uhr

Hallo Max1809,

ich glaube Distinct() ist das, was du suchst.

09.03.2011 - 15:09 Uhr

Hallo tonikln,

ich vermute, dass der Listen-Eintrag zunächst mal erstellt sein muss, bevor du Anhänge hinzufügen kannst. Wenn ich mir das hier anschaue, sieht es für mich nicht so aus, als ob es eine Möglichkeit gäbe, mehrere Anhänge auf einmal zu erstellen. Du kannst dir aber eine Methode schreiben, die das kann.

01.03.2011 - 19:42 Uhr

Hallo Xeletos,

du kannst ein "EditorPart" erstellen, über das du dann Einstellungsmöglichkeiten für dein Webpart anbieten kannst. Siehe hier.

public static string eMail;

Meiner Meinung nach ist das falsch. Wofür erstellst du hier ein öffentliches Feld? Und warum ist es als static deklariert?

09.02.2011 - 08:45 Uhr

Es ist auf jeden Fall ein Mercurial-Repository, aber man kann von außen per Subversion darauf zugreifen (
>
).

Heißt das, dass man auch AnkhSVN dafür benutzen kann?

07.02.2011 - 12:19 Uhr

Hallo oli001,

könntest du nicht einfach eine ImageColumn dafür nehmen?

02.02.2011 - 17:22 Uhr

Hallo Yashira,

warum möchtest du diese Daten in einer MessageBox anzeigen? Du kannst dir doch eine eigene Form basteln, die diese Daten in einem DataGridView anzeigt, oder nicht? Dann stehen sie mit Sicherheit untereinander.

02.02.2011 - 17:13 Uhr

Hallo querl,

das bekommst du mit Hilfe von BackgroundWorker.WorkerReportsProgress und BackgroundWorker.ReportProgress hin.
Nur wenn du ReportProgress() aufrufst, wird dein Event ProgressChanged gefeuert. Und vorher musst du natürlich WorkerReportsProgress auf true setzen.

19.01.2011 - 08:26 Uhr

Achso.
Aber du hast schon recht. Ich würde das glaube ich auch eher über die Registry prüfen. Schließlich benötigt Outlook zwingend die entsprechenden Registry-Schlüssel um problemlos ausgeführt werden zu können. Daher ist das wahrscheinlich die sicherste Variante.

18.01.2011 - 13:29 Uhr

Würde ich als letzte! Möglichkeit auch machen wenn die Registry nichts ergibt was sie aber sollte. Das ".14" in der ProgId sollte man natürlich weglassen.

Und warum sollte man das weglassen? Somit kannst du gegen eine bestimmte Version prüfen.

18.01.2011 - 11:59 Uhr

Nicht mehr, sonder nie gehabt.

Stimmt 😉

18.01.2011 - 11:54 Uhr

Nein, du fragst ab, ob der Value von SelectedItem null ist. Aber Wenn SelectedItem schon null ist, hast du keinen Zugriff mehr auf Value. Somit entsteht die Exception.

18.01.2011 - 11:28 Uhr

Hallo tom-cat,

kann es sein, dass du zunächst mal prüfen musst, ob SelectedItem null ist, bevor du Value prüfst?

18.01.2011 - 10:07 Uhr

Hallo Raidri,

zunächst würde (aus meiner Sicht) nichts dagegen sprechen, in der Registry nach einem Key zu suchen. Ich habe nochmal was anderes getestet:


Type t = Type.GetTypeFromProgID("Outlook.Application.14", false);
if (t != null)
{
    // ..
}

Funktioniert bei mir auch 😃

18.01.2011 - 09:46 Uhr

Hallo Raidri,

also wenn du das über die Registry machen möchtest, dann würde ich eher mit dem Key "HKEY_CURRENT_USER\Software\Microsoft\Office" arbeiten. Hier hast du dann für jede installierte Version verschiedene Schlüssel (z.B. \14.0\Outlook).

18.01.2011 - 08:38 Uhr

Hallo daniel94ever,

ich habe das mal getestet. Folgendes ist dabei rausgekommen:


Outlook.AddressLists lists = Application.GetNamespace("MAPI").AddressLists;

for (int i = 1; i <= lists.Count; i++)
{
    Outlook.AddressList list = lists[i];
    string name = list.Name;
}

Hoffentlich hilft dir das weiter.

03.01.2011 - 09:53 Uhr

Hallo mipa_acc,

ich habe das gerade mal getestet. Scheinbar kann man den Label des AddIn-Tabs was standardgemäß zur Verfügung gestellt wird, nicht ändern. Wenn du aber einen eigenen Tab hinzufügst, kannst du diesen über RibbonTab.Label problemlos ändern.

Folgendes funktioniert bei mir problemlos:


RibbonTab tab = this.Tabs.Where(t => t.Name == "tab2").ToList()[0];
tab.Label = "das ist ein test";

Ich habe das jetzt auf die Schnelle mit Lambda-Ausdrücken gemacht, weil ich nichts gefunden habe, womit man Tabs anhand des Namen ansprechen kann.

20.12.2010 - 17:14 Uhr

Hallo,

genauso, wie du zahl1 dort eingebaut hast.

20.12.2010 - 10:36 Uhr

Hallo 2one,

er meint MailItem.Body. Hier findest du alle MailItem Member. Unter Anderem auch Body.

16.12.2010 - 14:51 Uhr

Hallo Xevion,

ich habe mir mal erlaubt, in deine DLL reinzuschauen. Mir ist aufgefallen, dass du öffentliche Felder verwendest. Warum arbeitest du nicht mit Properties?

07.12.2010 - 10:35 Uhr

Hallo tonikln,

Ein DataSet kann keinen DataView enthalten, da ein DataView eine Ansicht auf eine bestimmte Tabelle ist. Wenn du aber ein DataSet hast, kannst du wie folgt auf den DefaultView der einzelnen Tabellen zugreifen:


DataView view1 = myDataSet.Tables[0].DefaultView;
DataView view2 = myDataSet.Tables[1].DefaultView;

Mehr dazu hier.

06.12.2010 - 08:34 Uhr

In zukünftigen Versionen sollte das also nicht mehr passieren. Schade, daß es noch nicht in die Debian-Testing durchgesickert ist, aber jetzt weiss ich wenigstens woran ich bin.

Dann hoffe ich mal, dass der Fehler behoben ist, wenn Squeeze den Stable-Status erreicht hat (was ja hoffentlich Anfang 2011 der Fall ist).

22.11.2010 - 11:55 Uhr

Du hast das schon richtig erkannt. Du könntest diese Methode in eine eigene Klasse auslagern und in jeder Form über die Instanz der Klasse die Methode aufrufen. Somit hättest du das gleiche Ergebnis wie zuvor, mit dem Unterschied, dass du die Logik nur an einer Stelle hast.

16.11.2010 - 09:58 Uhr

Hallo,

Hier ist ein Beispiel dazu. Aber das Thema des Threads war ja glaube ich ein anderes ([Hinweis] Wie poste ich richtig? Punkt 1.2) 😉

15.11.2010 - 16:54 Uhr

e.Result.InnerXml beinhaltet alle "Datensätze" der SharePoint-Liste. Das Problem hierbei ist, dass die Xml-Attribute von jedem Datensatz nach dem internen Spaltenname benannt sind. Scheinbar hast du hier keine Refferenz auf den Anzeigename. Wie man die Felddefinition einer Liste (inkl. Anzeigenamen) ermittelt, habe ich dir bereits beschrieben. Du könntest also eine DataTable erstellen und die Spalten-Bezeichnungen entsprechend der Anzeigenamen der SharePoint-Spalten setzen. Anschließend füllst du diese DataTable mit den Daten, die dir GetListItemsAsync liefert.

Ich weiß leider nicht, ob dich das in deinem Fall weiterbringt und für mich klingt das auch nicht nach einer sauberen Lösung, allerdings fällt mir gerade nichts Besseres ein. Vielleicht hat ja jemand anders noch eine Idee.

15.11.2010 - 15:23 Uhr

Ich glaube, wir reden gerade ein bisschen aneinander vorbei. Poste doch mal deinen Code und evtl. auch das Ergebnis.

In einer SharePoint-Liste muss man zwangsläufig feste Spaltennamen definieren. Der interne Spaltenname ist immer der, den du beim Erstellen der Spalte angibst. Wenn du den Namen der Spalte später wieder änderst, bleibt der interne Name unverändert. Nur der Anzeigename (DisplayName) ändert sich.

Beispiel:

Du erstellst eine Spalte "Vorname" =>
interner Name: "Vorname"
Anzeigename: "Vorname"

Jetzt möchtest du den Namen (bzw. die Überschrift) der Spalte in "Vorname2" ändern =>
interner Name: "Vorname"
Anzeigename: "Vorname2"

15.11.2010 - 12:29 Uhr

Hallo tonikln,

mich würde interessieren, wie du versuchst den Spaltenname zu ermitteln.

Die Feld-Definition der Liste kannst du folgendermaßen ermitteln:


XmlNode list = listService.GetList(listName);
XmlNode fields = list.FirstChild;

"FirstChild" beinhaltet in diesem Fall die Felddefinition. "fields" enthält dann mehrere XmlNodes wobei jedes einzelne ein Feld darstellt. Über das Attribut "DisplayName" kommst du dann an den Text, der auch im Browser angezeigt wird.

12.11.2010 - 13:50 Uhr

Hallo Ploetzi,

wenn es sich sowieso um ein XML-Format handelt, warum willst du dann Regex dafür verwenden? Warum benutzt du nicht einfach die XmlDocument-Klasse um Items zu löschen?

11.11.2010 - 12:30 Uhr

Hallo,

ich habe es gerade nochmal probiert und habe mich dabei an dem Beispiel auf MSDN orientiert. Jetzt scheint es zu funktionieren.
Zuerst habe ich meinem Projekt eine Web Reference mit der URL "http://xxx/_vti_bin/Lists.asmx" mit dem Namen "SPLists" hinzugefügt. Der Aufruf sieht folgendermaßen aus:


SPLists.Lists listService = new SPLists.Lists();

listService.Credentials = System.Net.CredentialCache.DefaultCredentials;

XmlDocument xmlDoc = new XmlDocument();
XmlElement query = xmlDoc.CreateElement("Query");
XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");

query.InnerXml = "<Query><Where><Eq><FieldRef Name=\"Title\" /><Value Type=\"Text\">Test</Value></Eq></Where></Query>";
viewFields.InnerXml = "<FieldRef Name=\"Title\" />";
queryOptions.InnerXml = "";

string listName = "{57EAB1F0-3AC2-4DEE-9CC9-B6E40E12A0B0}"; // GUID der Liste
string viewName = "{4FDFE44F-17DE-4314-BFE7-AC07C601F737}"; // GUID des Standard-Views
string rowLimit = "150";

XmlNode listItems = listService.GetListItems(listName, viewName, query, viewFields, rowLimit, queryOptions, null);

foreach (System.Xml.XmlNode listItem in listItems)
    Console.WriteLine(listItem.OuterXml);

Wie du siehst, verwende ich die WebID gar nicht.

Ich hoffe das hilft dir.

11.11.2010 - 11:25 Uhr

Tut mir Leid, da kann ich dir momentan nicht weiterhelfen.
Wenn ich Zeit habe, werde ich das aber mit dem WebService nochmal probieren und mich dann hier melden. Vielleicht habe ich auch noch irgendwo ein Testprogramm von mir auf der Festplatte rumfliegen. Ich meine nämich, ich habe das schonmal gemacht.

11.11.2010 - 10:56 Uhr

Auszug aus MSDN:

webID

Optional. A string containing the GUID of the parent Web site for the list surrounded by curly braces ({}). Setting this parameter to null means the Web site specified by the Url property of the service will be used, and if the Url property of the service is not specified, the root Web site will be used.

Wie man die webID auf dem SharePoint nachschauen kann, kann ich dir leider im Moment nicht sagen (ich bin aber der Meinung, dass es einen einfachen Weg geben müsste). Aber angeblich soll es mit dem SharePoint Manager funktionieren (der arbeitet aber soweit ich weiß nur mit dem Objekt Modell). Getestet habe ich das jedoch nicht.

11.11.2010 - 09:20 Uhr

Hallo,

also um zu prüfen, ob dein Query korrekt ist, kannst du den CAML Query Builder verwenden. Den gibt es in der Version 4.0 für SharePoint 2007.

Das Programm kann sich entweder über WebServices oder über das Objekt Modell verbinden. Für die Verbindung über das Objekt Modell muss das Programm dann natürlich auch auf der Maschine ausgeführt werden, auf der auch der SharePoint läuft.

Wenn die Verbindung hergestellt ist, kannst du dir dein Query zusammenbauen lassen und testen, ob tatsächlich Daten zurück kommen.

10.11.2010 - 15:45 Uhr

Hallo ZeroQool,

schau mal bitte nach, ob in deiner Web.config <compilation debug="true"> gesetzt ist. Falls das der Fall ist, setze den Wert auf false.

09.11.2010 - 15:57 Uhr

Hallo tonikln,

ich konnte den Fehler nachstellen aber die Ursache kenne ich bislang leider noch nicht.
Mich würde aber interessieren, welchen SharePoint du einsetzt. Dem Aufruf von GetListItems zufolge, müsste es 2007 sein, oder? Falls du aber 2010 einsetzt, besteht die Möglichkeit, Listen über das Client Object Model auszulesen. Das Handling finde ich einfach angenehmer als mit den WebServices.

Wenn deine Anwendung auf der gleichen Maschine wie der SharePoint selber laufen soll, würde ich aber sowieso über das normale Object Model (Microsoft.SharePoint Namespace) gehen.

08.11.2010 - 08:57 Uhr

Der Inhalt der heruntergeladenen Dateien ist folgender:

<?xml version="1.0" encoding="UTF-8"?><tree ><message type="ERROR">filesize() [&lt;a href='function.filesize'&gt;function.filesize&lt;/a&gt;]: stat failed for ajxp.fs://0/Uploads/_009.jpg in /usr/www/users/netnbl/stalki/admin/ajax/plugins/hook.openfile/class.HookOpenFile.php (l.56)</message></tree>  

Das ist allerdings auch das, was ich im Browser sehe (getestet mit Firefox und IE). Vielleicht könnte das schon das Problem sein. Und bei dir werden die Bilder im Browser richtig dargestellt? Komisch ...

28.10.2010 - 08:29 Uhr

Hallo,

es kann auch nicht schaden, das WorkingDirectory-Property zu setzen. Das hilft besonders dann, wenn die .bat Datei beispielsweise auf Dateien im gleichen Verzeichnis zugreift.

14.10.2010 - 11:11 Uhr

Hallo oli001,

hier gibt es Beispiele, wie du das umsetzen kannst. Ich hoffe das hilft dir.

12.10.2010 - 12:05 Uhr

Hallo nochmal,

der Thread ist zwar noch nicht alt, aber das Problem hat sich inzwischen erledigt. Auf dem SharePoint wurde das deutsche Language-Pack installiert. Demnach kennt der SharePoint deutsch und englisch.

Da wir auf einem englischen System entwickeln, wurde der Titel und die Beschreibung für die englische Version der WebSite gespeichert.

Mit folgendem Code haben wir das Problem gelöst:


web.TitleResource.SetValueForUICulture(web.UICulture, _newTitle);

Vielleicht hilft das ja mal irgendwem 😃

12.10.2010 - 11:37 Uhr

Hallo,

ich versuche über das SharePoint 2010 Object Model den Titel und die Beschreibung einer WebSite zu ändern. Hierbei gehe ich wie folgt vor:


using (SPSite site = new SPSite(_site))
{
    using (SPWeb web = site.OpenWeb(_web))
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            bool webAllowUnsafeUpdates = web.AllowUnsafeUpdates;
            web.AllowUnsafeUpdates = true;

            web.Title = "ABC 123";
            web.Description = "ABC 123";
            web.Update();

            web.AllowUnsafeUpdates = false;
        });
    }
}

Dieser Codeausschnitt (inkl. web.Update()) wird erfolgreich ausgeführt. Dennoch ist auf dem SharePoint keine Änderung zu sehen. Das kuriose dabei ist, dass bei einem zweiten Durchlauf die Properties "Title" und "Description" schon auf "ABC 123" gesetzt sind. Laut Debugger stimmt also alles, nur auf dem SharePoint ist nach wie vor keine Änderung zu sehen.

Auch ein Neustart des IIS hat nicht geholfen.

Hat hier vielleicht jemand eine Idee? Ich bin für jeden Tipp dankbar.

08.10.2010 - 15:46 Uhr

Hallo TheBrianiac,

also wenn ich mir eine Anforderungen so anschaue, dann denke ich nicht, dass etwas passendes finden wirst. Die Angebote von seriösen Firmen sind dann meiner Erfahrung nach doch etwas teurer.

07.10.2010 - 11:32 Uhr

Hallo Steel_Eagle,

auf die Schnelle habe ich folgendes dazu gefunden:

Automatische Skalierung in Windows Forms
ContainerControl.AutoScaleMode

Vielleicht hilft dir das ja.

01.10.2010 - 08:38 Uhr

Du hattest dir eher so eine Liste vorgestellt oder?
[Status] [StartDatum] [EndDatum] [etc.]

Ja genau. Und irgendwie ist es auch möglich, diese Liste dann in vertikaler Form darstellen zu lassen. Allerdings kann eine Liste ja eigentlich mehrere Einträge haben. Und ich weiß nicht, wie das dann aussieht.