Am postat un anunţuri clasificate pentru a vinde masina mea în judeţul Bergen, NJ noaptea de duminică. Am primit mai multe cereri prin e-mail la scurt timp după aceea şi închis a face cu cineva pe marţi noapte.
Aproape prea frumos sa fie adevarat …
Am postat un anunţuri clasificate pentru a vinde masina mea în judeţul Bergen, NJ noaptea de duminică. Am primit mai multe cereri prin e-mail la scurt timp după aceea şi închis a face cu cineva pe marţi noapte.
Aproape prea frumos sa fie adevarat …
Nu modifica căutare avansată XSLT foarte des, Deci se pare ca eu sunt alpinism dealuri mici de fiecare dată.
Lecţia mea cele mai noi este aceasta: Caz probleme când corelarea o coloană. În căutarea mea avansate, Am coloane definit ca aceasta:
<rădăcină xmlns:XSi="http://www.w3.org/ 2001/XMLSchema-exemplu">
<Coloane>
<Coloană nume="GafTrainingInvoiceNumber" />
<Coloană nume="GafTrainingInvoiceLocation" />
<Coloană nume="WorkId"/>
<Coloană nume="Protopopiat"/>
<Coloană nume="Titlul"/>
<Coloană nume="Autor"/>
<Coloană nume="Dimensiune"/>
<Coloană nume="Calea"/>
<Coloană nume="Descriere"/>
<Coloană nume="Scrie"/>
<Coloană nume="SiteName"/>
<Coloană nume="CollapsingStatus"/>
<Coloană nume="HitHighlightedSummary"/>
<Coloană nume="HitHighlightedProperties"/>
<Coloană nume="ContentClass"/>
<Coloană nume="IsDocument"/>
<Coloană nume="PictureThumbnailURL"/>
</Coloane>
</rădăcină>
XLST care afişează locaţia de numărul şi factură factura a fost:
<p>
Numărul de facturi de formare: <XSL:valoarea de Selectaţi="GafTrainingInvoiceNumber"/>
<br></br>
Locaţie de factură de formare: <XSL:valoarea de Selectaţi="GafTrainingInvoiceLocation"/>
</p>
Cu toate acestea, select a proprietăţii în toate minuscule de referinţă, ca şi în:
<p>
Numărul de facturi de formare: <XSL:valoarea de Selectaţi="gaftraininginvoicenumber"/>
<br></br>
Locaţie de factură de formare: <XSL:valoarea de Selectaţi="gaftraininginvoicelocation"/>
</p>
Până când am corectat că, rezultate de căutare a arătat etichetele (adică. "Numărul facturii de formare") dar nu există date.
Scenariu de afaceri:
Implementarea la nivel de Intreprindere MOSS pentru companie de producţie cu 30+ site-uri şi câteva zeci de departamentele corporative.
Obiectivul de afaceri:
În ciuda o multitudine de grupuri de afaceri (departamente, Locatii, etc), anumite date trebuie menținute la un nivel global. De exemplu, o autoritate lista master toate locaţiile fizice ale companiei (ex. facilităţi de producţie, locaţii de depozit, birouri de vânzări) ar trebui să fie menţinute într-o locaţie centrală.
Probleme tehnice:
Taxonomia Intreprindere a fost implementat folosind mai multe colecții de site-ul. Ne-ar fi plăcut să creeze autoritate lista de locaţii fizice într-o listă particularizată de AAC. Apoi, Când am nevoie pentru a avea o coloană într-un tip de conținut (sau o coloană de adăugat la o lista sau doc bibliotecă) care conţinea locatiile corporate, ne-ar crea o coloană utilizând "căutare" tip de date şi punct la această listă de maestru.
Din păcate, tipurile de date de căutare trebuie să accesa o listă de sursa "la nivel local" însemnând că lista noastră de autoritate nu cuprind colecţii de site-ul.
Soluţii tehnice:
Implementarea unui nou tip de date personalizate puse în aplicare pe baza SPField şi reprezentat ca un DropDownList în interfaţa utilizator a cărui ListItems popula din lista AAC maestru.
Am creat o colecţie de site-ul nou numit "http://localhost/EnterpriseData". Acolo, am creat o listă particularizată numit "Locatiile Corporate". Această listă utilizează doar standard "titlul" câmp să conţină lista de locaţii reale corporative.
Unul urmează mai multe etape discret pentru a crea un tip de date predefinite în AAC. Ele sunt:
Aici este codul pentru că:
publice Clasa XYZZYCorporateLocationField : SPFieldText
{
publice XYZZYCorporateLocationField
(SPFieldCollection câmpuri, şir typeName, şir displayName)
: baza(câmpuri, typeName, displayName) { }
publice XYZZYCorporateLocationField
(SPFieldCollection câmpuri, şir displayName)
: baza(câmpuri, displayName) { }
publice suprascrie BaseFieldControl FieldRenderingControl
{
obţine
{
BaseFieldControl controlul = noi XYZZYCorporateLocationFieldControl();
controlul. Denumirea câmpului = Acest lucru.InternalName;
reveni controlul;
} //obţine
} // fieldrenderingcontrol
publice suprascrie şir GetValidatedString(obiect valoarea)
{
Dacă (Acest lucru.Necesare || valoare. ToString().Este egal cu(Şir.Gol))
{
arunca noi SPFieldValidationException ("Departamentul nu este alocat.");
}
reveni baza.GetValidatedString(valoarea);
} // getvalidatedstring
} // XYZZYCorporateLocation
publice Clasa XYZZYCorporateLocationFieldControl : BaseFieldControl
{
protejate DropDownList XYZZYCorporateLocationSelector;
protejate suprascrie şir DefaultTemplateName
{
obţine
{
reveni "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName
publice suprascrie obiect Valoarea
{
obţine
{
EnsureChildControls();
reveni Acest lucru.XYZZYCorporateLocationSelector.SelectedValue;
} // obţine
set
{
EnsureChildControls();
Acest lucru.XYZZYCorporateLocationSelector.SelectedValue = (şir)Acest lucru.ItemFieldValue;
} // set
} // suprascrie obiect valoare
protejate suprascrie nule CreateChildControls()
{
Dacă (Acest lucru.Domeniul == nul || Acest lucru.ControlMode == SPControlMode.Afişare)
reveni;
baza.CreateChildControls();
Acest lucru.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer. FindControl("XYZZYCorporateLocationSelector");
Dacă (Acest lucru.XYZZYCorporateLocationSelector == nul)
arunca noi Excepţie("EROARE: Imposibil de încărcat. Fișierul ASCX!");
Dacă (!Acest lucru.Pagina de IsPostBack.)
{
folosind (SPSite site-ul = noi SPSite("http://localhost/enterprisedata"))
{
folosind (SPWeb web = site-ul. OpenWeb())
{
SPList.Update() currentList = web. Liste["Locatii corporativă"];
foreach (SPItem XYZZYCorporateLocation în currentList.Items)
{
Dacă (XYZZYCorporateLocation["Titlul"] == nul) «««;
şir theTitle;
theTitle = XYZZYCorporateLocation["Titlul"].ToString();
Acest lucru.XYZZYCorporateLocationSelector.Items.Add
(noi ListItem(theTitle, theTitle));
} // foreach
} // folosind spweb web = site.openweb()
} // folosind site-ul spsite = nou spsite("http://localhost/enterprisedata")
} // Dacă nu o postback
} // CreateChildControls
} // XYZZYCorporateLocationFieldControl
Codul de mai sus practic implementează logica pentru popularea DropDownList cu valori din listă particularizată AAC situat la http://localhost/enterprisedata şi numit "departamentele companiei".
Am definit ambele clase într-un fişier unic .cs, compilat-o şi pune-l în GAC (puternic solicitate, desigur).
<%@ Controlul Limba= "C#" Moștenește="Microsoft.SharePoint.portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.portal,Versiune = 12.0.0.0, Cultură = neutră,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Întotdeauna" %>
<%@ Înregistrează-te TagPrefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Asamblare="Microsoft.SharePoint, Versiune = 12.0.0.0, Cultură = neutră, PublicKeyToken = 71e9bce111e9429c" %> <%@ Înregistrează-te TagPrefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Asamblare="Microsoft.SharePoint, Versiune = 12.0.0.0, Cultură = neutră, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID-UL= "XYZZYCorporateLocationFieldControl" Runat= "server">
<Şablon>
<ASP:DropDownList ID-UL= "XYZZYCorporateLocationSelector" Runat= "serverul" />
</Şablon>
</SharePoint:RenderingTemplate>
Cele de mai sus este stocat în c:\Programul filescommon filesmicrosoft sharedweb server extensions12controltemplates.
<?XML versiunea="1.0" codificarea="UTF-8" ?>
<FieldTypes>
<FieldType>
<Câmp nume="TypeName">CorporateLocations</Câmp>
<Câmp nume="ParentType">Textul</Câmp>
<Câmp nume="TypeDisplayName">Locatiile corporate</Câmp>
<Câmp nume="TypeShortDescription">Toate locaţiile XYZZY corporative, inclusiv facilităţi de fabricație sau alte.</Câmp>
<Câmp nume="UserCreatable">ADEVĂRAT</Câmp>
<Câmp nume="ShowInListCreate">ADEVĂRAT</Câmp>
<Câmp nume="ShowInDocumentLibraryCreate">ADEVĂRAT</Câmp>
<Câmp nume="ShowInSurveyCreate">ADEVĂRAT</Câmp>
<Câmp nume="ShowInColumnTemplateCreate">ADEVĂRAT</Câmp>
<Câmp nume="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versiunea = 1.0.0.0, Cultură = neutră, PublicKeyToken = b0b19e85410990c4</Câmp>
<RenderPattern nume="DisplayPattern">
<Comutator>
<Expr>
<Coloană />
</Expr>
<Caz Valoarea=""/>
<În mod implicit>
<HTML>
<![CDATA[<stil de control = "culoare:Roşu"><b>]]>
</HTML>
<Coloană SubColumnNumber="0" HTMLEncode="ADEVĂRAT"/>
<HTML><![CDATA[</b></durata de>]]></HTML>
</În mod implicit>
</Comutator>
</RenderPattern>
</FieldType>
</FieldTypes>
Acest fişier XML adaugă tipul de date particularizate pentru a AAC "Biblioteca" şi se potriveşte împotriva GAC au avut Adunarea.
După toate aceste biţi, se deplasează în locul, iisreset pe server şi acesta ar trebui să toate începe să lucreze frumos.
Categorie suplimentară: CAML
aici este o mare detaşarea de un om numit "craig" pe o tehnica pentru a găsi florin definiții pentru domeniul tipurile de conținut bazate pe definiţii live reale de pe un site.
Postarea lui spune totul. Pe scurt:
Categorii suplimentare: Visual Student 2005
Pentru a activa utile intellisense pentru caracteristici, elemente, etc în visual studio 2005:
IntelliSense este acum activat pentru acel document XML.
A se vedea aici pentru mai multe informaţii pe această temă şi pentru instrucţiuni despre cum să automat asociat AAC intellisense cu orice fişier XML.
Am luat şi a trecut testul menţionate mai sus în această dimineaţă. Am găsit examen dificil si corect.
Există o relativă lipsa de informaţii cu privire la acest examen pe web. Nu sunt sigur de ce.
Evident, nu voi intra în orice detalii despre examen am luat, dar cred că în condiţii de siguranţă pot să spun următoarele:
Este liste de ce trebuie să ştiţi să treacă examenul şi este, OMI, foarte precise.
</scop>Aboneaza-te la blog-ul meu!
Categorie suplimentară: InfoPath
Rezumat: O InfoPath 2007 forma desfăşurate la un server de MOSS oferă un drop-jos listă de furnizori legat de o listă particularizată de MOSS. La selectarea un furnizor, reguli atribui valorile de câmp pentru un pumn de câmpuri de text, cum ar fi nume reprezentant de vânzări, Adresa, City, stat, zip şi telefon. Performanţa este oribil. Vom observa că performanţa se înrăutăţeşte (într-un mod non-liniar) pentru fiecare câmp suplimentar, vom actualiza acest fel. Adică, Dacă ne-am actualizare nume reprezentant de vânzări, este nevoie de [x] suma de timp. Dacă vom actualiza reprezentant de vânzări, address1, address2, City, stat, zip, este nevoie de 10 ori mai mult.
Soluție: Scrie un serviciu web (mostre de cod pot fi găsite aici) care este trecut numele un furnizor şi se întoarce înapoi detalii furnizor. Apoi, atribuiţi câmpurile în acest fel. Deşi acest lucru pare prea lent, nu a fost nici o diferenţă discernable în performanţă, când ne-am asociat 1 câmp comparativ cu 8 câmpuri. Ca un bonus, users a lua un cool "contactare server" Cylon efectul în timp ce ei aşteaptă pentru formularul pentru a invoca si consuma serviciul rezultate.
ACTUALIZARE: Am determinat niciodată cauza de această problemă şi it niciodată suprafaţă din nou.
Vom observa în timpul aplicării un site de dezvoltare că brusc, doi utilizatori sunt în imposibilitatea de a accesa o colecţie de site-ul. Aceste conturi pot autentifica la site-ul principal, dar atunci când încercarea de a accesa un anumit site de colectare, ei chiar a lua un ecran gol. Fără erori afişează, doar un gol pagină alb.
Am conectaţi-vă ca un admin site-ul de colectare şi încercaţi să adăugaţi unul dintre aceşti utilizatori ca un admin site-ul şi de această dată, la apăsarea "OK", ne-am lua acest mesaj:
Excepţie a avut loc. (Excepție de la HRESULT: 0x 80020009 (DISP_E_EXCEPTION))
Am petrecut ceva timp cercetând acest lucru şi, din păcate,, nu au venit cu ceva util.. Au existat unele mesaje în Jurnalul de diagnosticare, dar a fost greu să coreleze-le exact cu această problemă.
În cele din urmă, putem şterge colecția de site-ul şi re-creat şi că rezolvat-o.
Dacă m-am gândit ce cauzat acest lucru în viitor, Voi actualiza acest post.