Kategoria: Archiwum: Rozwój programu SharePoint

Proste wyjaśnienie: “Wartość nie mieszczą się w zakresie oczekiwanych.”

AKTUALIZACJA: Anonimowy plakat zostawił wielki komentarz o wewnętrznej nazwy. Koniecznie przeczytaj to.

Podczas pracy z odbiorników wydarzenie i inny kod, który odwołuje się do elementów listy programu SharePoint za pośrednictwem modelu obiektu, Ja często popełniają błędy, które generują ten błąd w czasie wykonywania:

Błąd ładowania i uruchomiony odbiornik przypadku Conchango.xyzzyEventReceiver w xyzzy, Wersja = 1.0.0.0, Kultura = neutral, PublicKeyToken = 0dc50a750396c3ac. Dodatkowe informacje są poniżej. : Wartość nie mieszczą się w zakresie oczekiwanych.

Myślę, że jest to dość ogólny błąd, który jest potencjalnie spowodował wiele różnych sposobów. Jednakże, jednym prostym wyjaśnieniem jest to, że jestem odniesienie pole niepoprawnie. Jeśli nazwa pola jest "Termin", Musi odwołać to jak to w przypadku odbiornika:

właściwości.ListItem["Termin"]

Kiedy błędnie lub korzystać w przypadku źle podczas odwoływania się do pola, SharePoint generuje wyżej wymieniony błąd runtime. Na przykład, to jest złe:

właściwości.ListItem["termin"]

</koniec>

Subskrybowanie mój blog.

Technorati znaczniki:

Szybkie & Łatwe: Utwórz Folder i przypisać typ zawartości (Lub, Mają kluczowe wskaźniki wydajności i gotował je zbyt)

Aby obejść KPI problem Pisałem o tutaj, Zrobiłem kilka testów i odkrył, że KWW pracy przeciwko foldery z meta-danych w taki sam sposób, że działają przeciwko dokumentów lub elementów. I okazało się to poprzez stworzenie nowego typu treści oparte na typie zawartości folderu i dodałam kilka pól. Stworzył kilka wskaźników i okazały się do siebie, że KWW działa zgodnie z oczekiwaniami. Dobrą wiadomością jest to. Nie jest doskonały, ponieważ drążenia niedziałający otrzymasz od KPI z folderów nie jest dokładnie to, co chcesz. To nie jest zbyt dużo to wada w moim przypadku bo 1) Użytkownicy nie wiedzą lepiej i 2) drążenie w dół idzie do folderu. One kliknij nazwę folderu i one są w pozycji. To dwa kliknięcia zamiast jednego, co nie jest koniec świata.

To ładnie płynęła z pracy, I robi. Jestem utworzenie folderu dla każdego dokumentu, który dostaje przesłane. To odbywa się za pomocą odbiornika wydarzenie. W rezultacie, jest to bułka z masłem do utrzymania folder nadrzędny meta-danych w synchronizacji z KWW napędzany meta danych z pliku, sam od kanalizacji jest już na miejscu. This allows me to have my KPI’s and eat them too 🙂

Ja zmodyfikowany odbiornika wydarzenie Dodaj folder, a następnie ustawić typ zawartości to nowy folder do mojego niestandardowego typu zawartości przyjaznych dla KPI. Ten kawałek kodu zrobi³ ten podstêp:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Dokumenty").Podfoldery;
  SPFolder addedFolder = srcFolders.Add(Właściwości.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Nowy SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Zawartość typu ID"] = kpiCT;
  addedFolder.Item.Update();

Aby zlokalizować rzeczywisty identyfikator typu zawartości, Dostęp do tego typu zawartości za pomocą ustawienia witryny i kopiowanie i wklejenie go z URL, jak pokazano:

obraz

</koniec>

Subskrybowanie mój blog!

Technorati znaczniki: ,

Szybkie i łatwe: Pobierz SPFolder SPListItem w odbiornik zdarzeń

I hate o przyjęciu, ale walczyłem z tym jednym wszystkie dni. Moim przypadku odbiornika należy zaktualizować pole jego folderu nadrzędnego. To trochę pokazuje jak to zrobić:

prywatne nieważne UpdateParentFolder(SPItemEventProperties właściwości)
{

SPFolder thisItemFolder = właściwości.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ stan zatwierdzenia"] = "Good news, Wszyscy!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

W tym przypadku, Pracuję z biblioteki dokumentów i właściwości są pochodzących z zdarzenie ItemAdded.

Lewę jest, że nie można uzyskać SPFolder element bezpośrednio z samego przedmiotu (tj.. właściwości.ListItem.Folder ma wartość null). Zamiast tego, Przejdź do elementu listy skojarzony plik i uzyskać folderu pliku.

</koniec>

Subskrybowanie mój blog!

Technorati znaczniki:

Jeszcze inny odbiornik zdarzeń debugowania Trick

Jestem pewien, że nie jestem pierwszą osobą, która to wymyślić. Jednakże, Nie zauważyłem ktoś publikuje pewien podstęp tak odkąd zacząłem zwracając szczególną uwagę na Wspólnotę w lipcu. Tak, Myślałem, że post to ten koniuszek szybkie i łatwe debugowanie.

Jestem w pracy odbiornika wydarzenie, które zaczęły wytwarzać ten błąd w 12 Ula:

Błąd ładowania i uruchomiony odbiornik przypadku Conchango.xyzzyEventReceiver w xyzzy, Wersja = 1.0.0.0, Kultura = neutral, PublicKeyToken = blahbalhbalh. Dodatkowe informacje są poniżej. : Odwołanie do obiektu nie ustawiono instancji obiektu.

Nie wiem, gdzie miał wprowadzony ten błąd, bo miał zrobić zbyt wiele rzeczy w jednym z moich cykli kod/wdrażanie/badania.

Próbowałem to rozwiązanie Aby uzyskać mój WPB tam z nadzieją, że SharePoint 12 Ula pokaże ślad stosu, ale nie ma szczęścia. Nie wiem, jeśli to możliwe, a jeśli ktoś nie, daj mi znaæ 🙂

Wiem, że to możliwe pisać wiadomości dziennika do 12 Ula. Szczerze mówiąc, Chciałem coś trochę mniej straszny i szybciej realizować.

To przyszło mi do głowy, że przynajmniej można dostać kilka podstawowych śledzenia informacji przez łapanie i rzucanie ponownie ogólne wyjątki jak to:

  Spróbuj {
    UpdateEditionDate(właściwości);
  }
  połów (Wyjątek e)
  {
    rzut Nowy Wyjątek("Dyspozytor, UpdateEditionDate(): Wyjątek: [" + e.ToString() + "].");
  }

Ten pojawił się w 12 Ula wygląda następująco:

Błąd ładowania i uruchomiony odbiornik przypadku Conchango.xyzzyEventReceiver w xyzzy, Wersja = 1.0.0.0, Kultura = neutral, TokenKluczaPublicznego = blahblahblah. Dodatkowe informacje są poniżej. : Dyspozytor, UpdateEditionDate(): Wyjątek: [NullReferenceException systemu.: Odwołanie do obiektu nie ustawiono instancji obiektu. w Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Właściwości SPItemEventProperties) w Conchango.xyzzyManagementEventReceiver.Dispatcher(Właściwości SPItemEventProperties, Ciąg eventDescription)].

To dało mi wszystkie szczegóły potrzebne do wytropienia tego konkretnego problemu i oczekiwać używać go dużo posuwają się do przodu.

</koniec>

Subskrybowanie mój blog!

Roztwór: SPQuery nie przeszukiwać foldery

W ubiegłym tygodniu I realizację "ewoluuje" rozwiązanie dla klienta, który korzysta z usługi BDC i SPQuery i wpadł na pewne trudności przy użyciu SPQuery przeciwko biblioteki dokumentów zawierających foldery. Motto: przypisać "cykliczne" atrybut widok kwerendy.

Mój scenariusz:

  • W poniedziałek, Przesłać dokument i podać niektóre dane meta.
  • Następny tydzień, Wgrać nowy dokument. Dużo od ten nowy dokument meta danych opiera się na dokumencie, który wysłał w poniedziałek (co nazywamy "dokument główny").
  • Stworzyliśmy elewacji usługi sieci web, które zapewnia usługi BDC-przyjazny interfejs do listy, tak, że użytkownicy mogą łatwo zlokalizować poniedziałek dokument korzystając z wyszukiwania tytuł.
  • Kolumna danych usługi BDC zapewnia przyjazny interfejs użytkownika. (Jest to część mojej próby przy użyciu usługi BDC na bardziej przyjazne kolumny odnośnika).

Końcowy usługi BDC fasada używa kwerendy jak to zrobić wyszukiwania:

 // Używane U2U narzędzie pomagające w tworzeniu tego zapytania CAML.
      oQuery.Query =
        "<W przypadku gdy>";

      Jeśli (titleFilter.Length > 0)
        oQuery.Query  =
          "  <I>";

      oQuery.Query  =
        "    <I>" +
        "      <GEQ>" +
        "        <Nazwa FieldRef =  "DocumentId" />" +
        "        <Typ wartości =  "Text">" + minId + "</Wartość>" +
        "      </GEQ>" +
        "      <LEQ>" +
        "        <Nazwa FieldRef =  "DocumentId" />" +
        "        <Typ wartości =  "Text">" + maxId + "</Wartość>" +
        "      </LEQ>" +
        "    </I>";

      Jeśli (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Zawiera>" +
          "      <Nazwa FieldRef =  "Title" />" +
          "      <Typ wartości =  "Text">" + titleFilter + "</Wartość>" +
          "    </Zawiera>" +
          "  </I>";
      oQuery.Query  =
        "</W przypadku gdy>";

W początkowej fazie rozwoju, Ten pracował wielki. Jednakże, wprowadziliśmy foldery w katalogu, aby rozwiązać niektóre problemy i nagle, mój wybór usługi BDC nie zwraca żadnych wyników. Śledziłem ten do faktu, że SPQuery nigdy nie zwróci żadnych wyników. Użyliśmy foldery przede wszystkim umożliwienie wielu plików o tej samej nazwie, aby przekazać, ale z różnych danych meta. Kiedy plik jest wgrany, utworzyć folder oparte na identyfikator elementu listy, a następnie przenieść plik istnieje (Pisałem o tym tutaj; Mieliśmy mieszane wyniki z tym podejściem, ale na całej, to działa dobrze). Użytkownik nie obchodzi o folderów i w rzeczywistości, naprawdę nie rozumiem, że tu są wszelki teczka. Bazodanowego wszystkie widoki na bibliotece pokazanie pozycji bez względu na foldery.

Ja uderzyæ ten problem dwa razy jako technicznego wykonania ewoluowały i rozwiązać to inaczej za każdym razem. Po raz pierwszy, Nie używające operatora CONTAINS kwerendy. Bez operatora CONTAINS, Udało mi się rozwiązać ten problem przez określenie widoku na SPQuery contructor. Zamiast przy użyciu konstruktora domyślnego:

SPList oList = www.List["Dokumenty"];

SPQuery oQuery = Nowy SPQuery();

Kiedyś zamiast Konstruktor, że określony widok:

SPList oList = www.List["Dokumenty"];

SPQuery oQuery = Nowy SPQuery(oList.Views["Wszystkie dokumenty"]);

Że rozwiązać problem i zacząłem się moje wyniki.

Następnie dodaje operatora CONTAINS w mix i ponownie złamał. Okazuje się, że CONTAINS operator, tak dalece jak mogę powiedzieć, nie działa z widok taki sam sposób jak prostsze GEQ / LEQ operatorów. Zrobiłem kilka wyszukiwania i dowiedziałem się, że kwerendy ViewAttributes powinna być ustawiona na "Cykliczne", jak w:

oQuery.ViewAttributes = "Zakres = "Recursive"";

To rozwiązało problem dla zawiera. W zasadzie, to również rozwiązać mój oryginalny problem wyszukiwania i jeśli ja miał określony cykliczne atrybut po raz pierwszy, Chcieliby mieć nie napotkasz znowu problem.

Fakt, że oparte na widoku SPQuery działa dla niektórych operatorów (GEQ/LEQ) i inne nie (ZAWIERA), w połączeniu z faktem, że KWW nie wydaje się do pracy w ogóle folder zawierający dokument bibliotek prowadzi mnie do przypuszczenia, że SPQuery ma pewne problemy Ortogonalność.

Specjalne podziękowania:

</koniec>

Subskrybowanie mój blog!

Błąd KWW MOSS? Lista wskaźnik wiązanej do biblioteki dokumentów z folderami

AKTUALIZACJA 02/29/08: Rozwiązałem ten problem przez utworzenie folderu, a następnie przypisując typu zawartości do folderu, który ma dane meta, potrzebne dla kluczowych wskaźników wydajności. I który szczegółowo opisane w trochę więcej tutaj.

Wdrożyliśmy rozwiązanie techniczne, gdzie użytkownicy przesłać dokumenty do biblioteki dokumentów. Odbiornik przypadku tworzy katalog i przenosi plik do katalogu (przy użyciu techniki podobne do I napisał o tutaj). Mamy już skutecznie poruszać się wokół potencjalne problemy spowodowane przez zdarzenia odbiorniki, które zmienić przesłane pliki (głównie, ponieważ użytkownicy nigdy nie uruchomić ich dokumentu, klikając na "New" ale zamiast tego utworzyć dokumenty lokalnie, a następnie przesłać je).

Dane meta dla tych dokumentów zawiera tak/nie umiejscowienie kolumna o nazwie "pilne" i inny umiejscowienie kolumna o nazwie "Status". Musimy sprostać wymagania biznesowe, który pokazuje procent "pilne" dokumentów, których status "Oczekujący".

To jest zwykle proste do zrobienia i opisałem coś bardzo podobnie jak to w SharePoint Beagle wiele zrzutów ekranu, jeśli jesteś zainteresowany.

W skrócie, Zrobiłem następujące:

  • Tworzenie widoku biblioteki dokument o nazwie "Oczekujący".
  • Konfigurowanie widoku, aby zignorować strukturę folderów.
  • Tworzenie listy wskaźników KPI.
  • Utworzyć wskaźnik w liście, który wskazuje doc lib i że "oczekujące" Widok.

To po prostu nie działa. KWW pokazuje mój cel (np.. pięć pilnych dokumentów) ale zawsze pokazuje rzeczywistą liczbę pilnych dokumentów jako zero. Paradoksalnie, Jeśli sięgniecie do szczegółów, to pokazuje pięć pilne dokumenty na liście. I stworzył bardzo prosty scenariusz z dwóch dokumentów, jeden folder i nie. Oto zrzut ekranu:

obraz

Powyższy zrzut ekranu wyraźnie pokazuje, że istnieją dwa dokumenty w widoku, ale wartość"" jest jeden. "CamlSchema" z pustego dokumentu Id jest w folderze głównym, a druga jest w folderze o nazwie "84".

Wydaje mi się że nawet, Jeśli określisz widok, KWW nie honoru "Pokaż wszystkie elementy bez folderów" ustawienie i zamiast, ogranicza się do głównego folderu.

Jeśli się mylę, proszę napisz do mnie lub zostawić komentarz.

</koniec>

Subskrybowanie mój blog!

Technorati znaczniki:

Rozwiązanie problemu: “FileNotFoundException” Z mojego odbiornikiem funkcji.

Pracowałem na funkcję w zeszłym tygodniu, że dodać kilka odbiorników przypadku wystąpienie określonej listy. (I blogowane trochę o tym tutaj listy odbiornika).

Przy użyciu wiersza polecenia, Z błąd nie może zainstalować funkcję (ale można znaleźć poniżej w ukrytych błąd). Kiedy próbował wdrożyć funkcję na stronie, MOSS spornej "FileNotFoundException" błąd. Ten wpis w blogu zawiera opis jak go rozwiązał.

Jest to błąd, który MOSS pokazał mnie w przeglądarce sieci web:

Funkcja "b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ nie można zainstalować ponieważ ładowanie zestawu odbiornika zdarzeń "xyzzyFeatureReceiver_0" nie powiodło się: System.IO.FileNotFoundException: Nie można załadować pliku lub wirtualny plik dziennika ' xyzzyFeatureReceiver_0’ lub jednej z jego zależności. System nie może odnaleźć określonego pliku.
Nazwa pliku: "xyzzyFeatureReceiver_0’
w System.Reflection.Assembly.nLoad(AssemblyName nazwa_pliku, Ciąg codeBase, Dowody assemblySecurity, Zespół locationHint, StackCrawlMark& stackMark, Logiczna throwOnFileNotFound, Logiczna forIntrospection)
w System.Reflection.Assembly.InternalLoad(AssemblyName elementu assemblyRef, Dowody assemblySecurity, StackCrawlMark& stackMark, Logiczna forIntrospection)
w System.Reflection.Assembly.InternalLoad(Ciąg assemblyString, Dowody assemblySecurity, StackCrawlMark& stackMark, Logiczna forIntrospection)
w System.Reflection.Assembly.Load(Ciąg assemblyString)
w Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
OSTRZEŻENIE: Montaż wiązania rejestrowanie jest wyłączone OFF.
Aby włączyć rejestrowanie, ustawić wartość rejestru [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) do 1.
Uwaga: Istnieje niektóre kary wydajności związanych z rejestrowanie.
Aby wyłączyć tę funkcję, Usuń wartość rejestru [HKLMSoftwareMicrosoftFusion!EnableLog].

Rozwiązywanie problemów z programem Windows SharePoint Services z.

Wiem, jak celowo spowodować błąd ten: nie należy instalować wirtualny plik dziennika w pamięci podręcznej GAC. Ale, to było w pamięci podręcznej GAC. Normalnie instalowania zestawów w pamięci podręcznej GAC, przeciągając je do c:\windowsassembly folderów przy użyciu Eksploratora windows. Nigdy nie czułem 100% komfortowe robić iż ponieważ zawsze myślę, że gacutil istniały z powodu … tak próbowałem, że. To nie ma różnicy.

Przeszukiwane Internets i znaleźć na stanowisku tym: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakat się stało się przy użyciu tych samych bit głównego kodu (z książki wewnątrz WSS z tej listy) tak to było znakiem nadziei. Jednakże, Sugerowanie wykończeniowe Zgromadzenie z [montaż: ] dyrektywy nie ma sensu do mnie. Próbowałem i tak, i miałem rację. To nie ma różnicy.

Potem zauważyłem, że moja definicja klasy nie był publiczny. Zrobiłem to za publiczne i że nie ma różnicy.

Następny, Ja poszedłem do problemów umożliwienia "Zgromadzenie wiązanie awarii dziennik" (w następstwie pomocne i dokładne instrukcje pod warunkiem) i to jest gdzie wszystko zaczęło się ciekawie. Log pokazuje mi, że runtime jest wyszukiwanie wszędzie na tym serwerze do mojego zestawu. To nawet wydaje się być to wyszukiwanie w mojej apteczce. Ale … on nie będzie go wyszukać w pamięci podręcznej GAC.

Umieścić na moim kurtka zimowa i ponownie go do poszukiwania Internets i znaleźć, że ktoś miał ten problem zbyt. Długich dyskusji w tym księgowania peters off na nic i nie może znaleźć rozwiązanie.

Przenoszę mój zespół w jednym z miejsc, które dziennik twierdzi, to jest wyszukiwanie i trochę więcej postęp. Jestem nagrodzone nowy błąd w przeglądarce, podczas ja próbować wobec przyśpieszyć ten cecha:

Nie można utworzyć obiektu odbiornik funkcji z zestawu "xyzzyFeatureReceiver_0", Wpisz "Conchango.xyzzyFeatureReceiver" dla funkcji b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Wartość nie może być zerowy.
Nazwa parametru: Typ
w System.Activator.CreateInstance(Typ, Logiczna nonPublic)
w System.Activator.CreateInstance(Typ)
w Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Rozwiązywanie problemów z programem Windows SharePoint Services z.

Czas na jedną podróż ostatni do Internets!

Tym razem dowiedzieć się, wystarczająco właściwie, że MOSS kwestie ten błąd, ponieważ wirtualny plik dziennika nie jest w pamięci podręcznej GAC.

Chcę, aby uzyskać coś pozytywne z tej i spróbuj się trochę dumny, że została utworzona Ścigany instrukcje MSIL zestawów, ale to nie działa. Jestem po prostu zły. Znalazłem się mrucząc "jajko czy kura" pod my breath.

W końcu zdecydować do punt. I stworzyć zupełnie nowy projekt i Kopiuj/wklej kod z incredible-cloaked-from-the-GAC-assembly projektu pracy nad nowy projekt. (Mam szukać kompilacji flagę o nazwie coś w stylu „Ukryj z zestawu wiążące Jeśli zainstalowany w pamięci podręcznej GAC" ale nie może odnaleźć jednego).

Zainstalować funkcję i go uaktywnić i … to działa! Tak, po tym wszystkim, Miałem na zasadzie "restart’ mój projekt. Jest to kolejny powód dlaczego I hate komputerów.

Dowiedzieć się coś pożytecznego z tego. Miał Instalowanie funkcji przy użyciu wiersza polecenia stsadm cały dzień i zostały z wykorzystaniem "-życie" Opcja z przyzwyczajenia. Z jakiegoś powodu, I nie używać opcji - force gdy zainstalowałem nowego projektu. Tym razem, I did faktycznie, prawdziwie zapominać wobec kopiować ten nowy projekt wirtualny plik dziennika w pamięci podręcznej GAC. W rezultacie, Mimo że odebrano tego FielNotFoundException"" błąd. Tym razem, I got it z stsadm, nie podczas ja wypróbowany wobec przyśpieszyć ten cecha za pośrednictwem przeglądarki sieci web. Tak, -życie faktycznie pełni dwie role. To pozwala ponownie zainstalować funkcję istniejących. To również pozwala na zainstalowanie buggy funkcja, która nie może pracować w czasie wykonywania przez pomijanie błąd. To chyba mówi tyle gdzies w pomocy, ale nigdy nie zauważyłem.

</koniec>

Technorati znaczniki: ,

Szybkie & Łatwe: Zmień nazwę załadowany plik przy użyciu Model obiektowy programu SharePoint za pośrednictwem odbiorca zdarzeń

AKTUALIZACJA: To działa, ale istnieją znaczne ograniczenia, które są opisane w komentarzach. To jeszcze może być przydatne w niektórych przypadkach.

AKTUALIZACJA 2: W bieżącym projekcie, użytkownicy zawsze przesłać dokumenty. W rezultacie, Nie ja biegaæ w pewien problem gdzie MS Word pracuje i myśli, że plik został przemianowany na to. Popaść w problem, "plik został zmodyfikowany przez kogoś innego" i rozwiązać to poprzez flagę typu proste semafor. Użytkownik potrzebować wobec zmienić pole danych meta z domyślnej wartości na coś innego. Itemupdated() Odbiornik szuka prawidłowej wartości przed faktycznie świadczącego zmiany nazwy i od tamtego czasu, Nie miał żadnych problemów. Może się wahać.

Mam klienta wymóg, aby zmienić nazwę plików przesłane do określonej biblioteki dokumentów odpowiadają szczególnym konwencji nazewnictwa. API nie podać nazwy"()" Metoda. Zamiast tego, używamy "MoveTo(…)". Tutaj jest trochę minimalny kod, aby osiągnąć:

 publiczne zastępowanie nieważne ItemAdded(SPItemEventProperties właściwości)
        {
            SPFile f = właściwości.ListItem.File;

            f.moveTo(właściwości.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Trochę trudne, tylko jest "właściwości. ListItem.ParentList.RootFolder.Url". MoveTo() Metoda wymaga adresu URL. Że tłuczone ciąg punktów mnie do głównego folderu mój obecny biblioteki dokumentów. To pozwala mi uniknąć wszelkich twardych kodowania w moim przypadku odbiornika.

To jest bardziej użyteczne wersja, która działa tak samo, ale przypisuje nazwę pliku "Tytuł":

 publiczne zastępowanie nieważne ItemAdded(SPItemEventProperties właściwości)
        {
            DisableEventFiring();

            // Tytuł ten element można przypisać nazwę pliku, sam.
 // UWAGA: Ten przydział musi nastąpić przed możemy modyfikować sam plik.
 // Wywołanie aktualizacji() na SPFile wydaje unieważnia właściwości
 // jakimś sensie.  Aktualizacje "Tytuł" nie powiodło się, dopóki zmienić (i aktualizacja() Wywołanie)
 // zostały przeniesione z przodu zmiany do nazwy pliku.
            właściwości.ListItem["Tytuł"] = właściwości.ListItem.File.Name;

            właściwości.ListItem.Update();

            SPFile f = właściwości.ListItem.File;

            // Pobierz rozszerzenia pliku.  Potrzebujemy który później.
 ciąg spfileExt = Nowy FileInfo(f.Name).Rozszerzenie;

            // Zmień nazwę pliku elementu listy ID i rozszerzenie pliku służy do przechowywania
 // część jego nienaruszone.
            f.moveTo(właściwości.ListItem.ParentList.RootFolder.Url +
                "/" + właściwości.ListItem["IDENTYFIKATOR"] + spfileExt);

            // Zatwierdzić przeniesienie.
            f.Update();

            EnableEventFiring();
        }

Drobna porada: Web Part Kwerenda zawartości, Wartość kolumna odnośnika i XSL

Mam nazwę kolumny w polu Typ zawartości o nazwie "Lokalizacji nieruchomości".

To kolumna jest typu "wyszukiwanie".

Mam zmodyfikowany <CommonViewFields> i ItemStyle.xsl, aby pokazać kolumnę.

Prosty <XSL:wartość z wybierz =…> zwraca wartość wewnętrznej, która zawiera dane pozycji porządkowej, takich jak:

1;#Miami

Aby uzyskać wartość przyjazne dla człowieka, Użyj xsl podciąg po, jak pokazano:

<XSL:( @Real_x005F_x0020_Estate_x005F_x0020_Location, '#') ">< / xsl:wartość z >(@Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></XSL:wartość z>

Skorzystać z tej techniki, gdy pracujesz z wartości odnośników transformacji XSL i trzeba uzyskać wartość przyjazne dla człowieka.

<koniec />

Technorati znaczniki: , ,

Szybkie i łatwe: Określić nazwę wewnętrzną kolumnę kolumny witryny

AKTUALIZACJA: Jeremy Thake ma o tym blogu i umieścić niektóre kod dla aplikacji konsolowych który pokazuje wewnętrznymi nazwami.

Starałem się dostać kwerendy zawartości składnika web part do wyświetlania termin od zadanie i dlatego, że ekran jest "Termin", Sądziłem, że nazwę kolumna w <CommonViewFields> jest "Due_x0020_Date".

Niewłaściwy!

Prawdziwe kolumna Nazwa w tym wypadku był "DueDate".

Jak mogę znaleźć? Ponownie przeczytać Heather Wpis w blogu Salomona na zmianę CQWP Aby wyświetlić dodatkowe kolumny danych. Opisuje ten proces w kroku #13. Zaufanie to. To jest poprawny. Co najmniej, słusznie to dla mnie. Nie miał zaufania to najpierw do innej kolumny z nazwą znacznie dłużej.

Mówię "zaufania" ponieważ nie miał zaufania i prawdopodobnie zmarnowane w pobliżu dwóch godzin wtrącanie się głową do ściany. Po rozwiązane "DueDate" Nazwa, Chciałem, aby dodać kolejne pole do <CommonViewFields>. Przy użyciu techniki Salomona, Ja był dostawanie nazwę kolumna, takie jak "XYZ_x0020_Project_x0020_Due_x00".

Myślałem, że sobie, wyraźnie to skrócona nazwa. I poszedł do przodu i un-obcięte to bez powodzenia. Wreszcie używane nazwy pozornie obcięte i ono pracował.

Bonus Wskazówka: Kiedy byłem w pracy z CQWP, Jeśli dodaje się złą sławą wewnętrznego do <CommonViewFields>, CQWP powie mi, że kwerenda wrócił bez rezultatów. Ale, Jeśli dodałem nazwa pola Typ danych, to zwróci wynik. Dodawanie danych typu faktycznie maskowane problem ponieważ był odwołującego się do pola nieistniejące. Może go dodać, ale kiedy próbował wyświetlić jego wartość, Zawsze dostanie puste.

To nie maska błędu:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Tego maska błędu:

<CommonViewFields>Due_x0020_Date,Data/godzina;</CommonViewfields>

</koniec>