He publicat un anunci per vendre el meu cotxe al Comtat de Bergen, NJ diumenge nit. He rebut diverses consultes via correu electrònic poc després i tancat l'acord amb algú el dimarts a la nit.
Gairebé massa bo per ser veritat …
He publicat un anunci per vendre el meu cotxe al Comtat de Bergen, NJ diumenge nit. He rebut diverses consultes via correu electrònic poc després i tancat l'acord amb algú el dimarts a la nit.
Gairebé massa bo per ser veritat …
No modifica la cerca avançada XSLT molt sovint, Així, sembla que estic escalada petits turons cada vegada.
La meva lliçó més nou és això: Cas importa quan fa referència a una columna. En la meva recerca avançada, Tinc columnes definits com això:
<arrel xmlns:XSi="http://www.w3.org/2001/XMLSchema">
<Columnes>
<Columna Nom="GafTrainingInvoiceNumber" />
<Columna Nom="GafTrainingInvoiceLocation" />
<Columna Nom="WorkId"/>
<Columna Nom="Rang"/>
<Columna Nom="Títol"/>
<Columna Nom="Autor"/>
<Columna Nom="Mida"/>
<Columna Nom="Camí"/>
<Columna Nom="Descripció"/>
<Columna Nom="Escriure"/>
<Columna Nom="SiteName"/>
<Columna Nom="CollapsingStatus"/>
<Columna Nom="HitHighlightedSummary"/>
<Columna Nom="HitHighlightedProperties"/>
<Columna Nom="ContentClass"/>
<Columna Nom="IsDocument"/>
<Columna Nom="PictureThumbnailURL"/>
</Columnes>
</arrel>
eL XSLT que Mostra la ubicació del nombre i la factura factura havia estat:
<p>
Número de factura de formació: <XSL:valor de Selecciona="GafTrainingInvoiceNumber"/>
<BR></BR>
Localització de factura de formació: <XSL:valor de Selecciona="GafTrainingInvoiceLocation"/>
</p>
No obstant això, la selecció ha fer referència a la propietat en minúscules, com a:
<p>
Número de factura de formació: <XSL:valor de Selecciona="gaftraininginvoicenumber"/>
<BR></BR>
Localització de factura de formació: <XSL:valor de Selecciona="gaftraininginvoicelocation"/>
</p>
Fins que he corregit que, resultats de la cerca mostrar les etiquetes (i. e. "Número de factura de formació") però no hi ha dades.
Escenari de negocis:
Implantació àmplia d'empresa de molsa per empresa de fabricació amb 30+ uns quants dotzena corporatives departaments i llocs.
Objectiu de negoci:
Malgrat la multitud de grups empresarials (departaments, localitzacions, etc), ha de mantenir certes dades a nivell global. Per exemple, una llista mestra autoritzat de totes les ubicacions físiques de l'empresa (e. g. instal·lacions de fabricació, localitzacions de magatzem, oficines de vendes) ha de mantenir en un emplaçament cèntric.
Problema tècnic:
La taxonomia d'empresa va ser implementat utilitzant múltiples col·leccions de llocs. Ens hagués agradat crear una llista personalitzada WSS llista d'ubicacions físiques. Llavors, Quan el necessitàvem tenir una columna en un tipus de contingut (o una columna s'afegeix a una llista o document de la biblioteca) que contenia llocs corporatius, hem de crear una columna mitjançant la cerca"" tipus de dades i punt d'aquesta llista mestra.
Per desgràcia, es cerca d'accedir a una llista de font "localment" és a dir que la nostra llista autoritzat no pot abastar col·leccions de llocs.
Solució tècnica:
Implementar un nou tipus de dades personalitzades implementat sobre la base d'SPField i representat com un DropDownList en l'UI poblar la ListItems de la llista mestra WSS.
Hem creat una nova col·lecció anomenada "http://localhost/EnterpriseData". Hi ha, hem creat una llista personalitzada anomenat "Localitzacions corporativa". Aquesta llista només utilitza el "títol estàndard" camp conté la llista d'ubicacions reals corporatius.
Seguint uns quants passos discrets per crear un tipus de dades personalitzades en WSS. Són:
Aquí està el codi per a que:
públic classe XYZZYCorporateLocationField : SPFieldText
{
públic XYZZYCorporateLocationField
(SPFieldCollection camps, corda typeName, corda displayName)
: base(camps, typeName, displayName) { }
públic XYZZYCorporateLocationField
(SPFieldCollection camps, corda displayName)
: base(camps, displayName) { }
públic invalidació BaseFieldControl FieldRenderingControl
{
aconseguir
{
BaseFieldControl control = nou XYZZYCorporateLocationFieldControl();
control. FieldName = això.InternalName;
retorn control;
} //aconseguir
} // fieldrenderingcontrol
públic invalidació corda GetValidatedString(objecte valor)
{
Si (això.Requerit || valor. ToString().És igual a(Corda.Buit))
{
tir nou SPFieldValidationException ("Departament no està assignat.");
}
retorn base.GetValidatedString(valor);
} // getvalidatedstring
} // XYZZYCorporateLocation
públic classe XYZZYCorporateLocationFieldControl : BaseFieldControl
{
protegit DropDownList XYZZYCorporateLocationSelector;
protegit invalidació corda DefaultTemplateName
{
aconseguir
{
retorn "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName
públic invalidació objecte Valor
{
aconseguir
{
EnsureChildControls();
retorn això.XYZZYCorporateLocationSelector.SelectedValue;
} // aconseguir
conjunt
{
EnsureChildControls();
això.XYZZYCorporateLocationSelector.SelectedValue = (corda)això.ItemFieldValue;
} // conjunt
} // substituir el valor d'objecte
protegit invalidació buit CreateChildControls()
{
Si (això.Camp = = nul·la || això.ControlMode = = SPControlMode.Exhibició)
retorn;
base.CreateChildControls();
això.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer.("XYZZYCorporateLocationSelector");
Si (això.XYZZYCorporateLocationSelector = = nul·la)
tir nou Excepció("ERROR: No es pot carregar. Fitxer ASCX!");
Si (!això.Pàgina de IsPostBack.)
{
utilitzant (SPSite lloc = nou SPSite("http://localhost/enterprisedata"))
{
utilitzant (SPWeb web = lloc. OpenWeb())
{
SPList currentList = la web. Llistes["Llocs corporatius"];
foreach (SPItem XYZZYCorporateLocation en currentList.Items)
{
Si (XYZZYCorporateLocation[Títol""] == nul·la) «««;
corda theTitle;
theTitle = XYZZYCorporateLocation[Títol""].ToString();
això.XYZZYCorporateLocationSelector.Items.Add
(nou Element de llista(theTitle, theTitle));
} // foreach
} // utilitzant spweb web = site.openweb()
} // utilitzant spsite lloc = spsite nou("http://localhost/enterprisedata")
} // Si no una devolució
} // CreateChildControls
} // XYZZYCorporateLocationFieldControl
El codi citat bàsicament implementa la lògica per emplenar el DropDownList amb els valors de la llista de costum WSS situat al http://localhost/enterprisedata i anomenat "departaments corporativa".
Defineix ambdues classes en un arxiu sol CS, compilat i posar-lo a la GAC (fort requerit, clar).
<%@ Control Llengua= "C#" Hereta="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versió = 12.0.0.0, cultura = neutre,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Sempre" %>
<%@ Registrar-se TagPrefix= «wssawc" Espai de noms="Microsoft.SharePoint.WebControls" L'Assemblea="Microsoft.SharePoint, Versió = 12.0.0.0, Cultura = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registrar-se TagPrefix= "Del SharePoint" Espai de noms="Microsoft.SharePoint.WebControls" L'Assemblea="Microsoft.SharePoint, Versió = 12.0.0.0, Cultura = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Plantilla de representació ID= «XYZZYCorporateLocationFieldControl" runat= "servidor">
<Plantilla>
<escurçó:DropDownList ID= «XYZZYCorporateLocationSelector" runat= "servidor" />
</Plantilla>
</SharePoint:Plantilla de representació>
L'anterior està guardada en c:\programa filescommon comunesMicrosoft sharedweb server extensions12controltemplates.
<?XML versió="1.0" codificació="UTF-8" ?>
<FieldTypes>
<FieldType>
<Camp Nom="TypeName">CorporateLocations</Camp>
<Camp Nom="ParentType">Text</Camp>
<Camp Nom="TypeDisplayName">Llocs corporatius</Camp>
<Camp Nom="TypeShortDescription">Totes les localitzacions XYZZY corporativa incloent instal·lacions de fabricació o altres.</Camp>
<Camp Nom="UserCreatable">VERITABLE</Camp>
<Camp Nom="ShowInListCreate">VERITABLE</Camp>
<Camp Nom="ShowInDocumentLibraryCreate">VERITABLE</Camp>
<Camp Nom="ShowInSurveyCreate">VERITABLE</Camp>
<Camp Nom="ShowInColumnTemplateCreate">VERITABLE</Camp>
<Camp Nom="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versió 1.0.0.0 de =, Cultura = neutral, PublicKeyToken = b0b19e85410990c4</Camp>
<RenderPattern Nom="DisplayPattern">
<Interruptor>
<EXPR>
<Columna />
</EXPR>
<Cas Valor=""/>
<Per defecte>
<HTML>
<![CDATA[<abasten estil = "color:Vermell"><b>]]>
</HTML>
<Columna SubColumnNumber="0" HTMLEncode="VERITABLE"/>
<HTML><![CDATA[</b></span>]]></HTML>
</Per defecte>
</Interruptor>
</RenderPattern>
</FieldType>
</FieldTypes>
Aquest fitxer XML afegeix el tipus de dades personalitzades a la "biblioteca WSS" i fa correspondre'l en contra de la GAC havia Assemblea.
Després entrant tots aquests bits en lloc, iisreset en el servidor i ho hauria all stars treballant de manera bonica.
Categoria addicional: CAML
Aquí és un anunci gran per un home anomenat "craig" en una tècnica per trobar les definicions de tipus de contingut de camp real, en directe definicions d'un lloc basats CAML.
L'anunci diu que tots els. En breu:
Categories addicionals: Estudi Visual 2005
Permetre intellisense útil per trets, elements de, etc. en estudi visual 2005:
IntelliSense és ara permès d'aquell document XML.
Veure aquí per a més informació sobre aquest tema i per obtenir instruccions sobre com associar automàticament WSS intellisense amb qualsevol arxiu XML.
Vaig prendre i superat la prova esmentada aquest matí. He trobat l'examen serà difícil i Fira.
Hi ha una relativa escassetat d'informació sobre aquest examen en la web. No sóc segur per què.
Òbviament, no entraré en detall sobre l'examen que vaig prendre, però crec que amb seguretat pot dir el següent:
Ho llistes el que vostè necessita saber per passar l'examen i la seva, L'OMI, molt precisa.
</final>Subscriure's al meu blog!
Categoria addicional: L'InfoPath
Resum: Un InfoPath 2007 forma desplegada a un servidor de molsa proporciona una llista desplegable de venedors lligat a una llista personalitzada de molsa. En seleccionar un proveïdor, regles assignar valors de camp a un grapat de camps de text com ara el nom de representant de vendes, Adreça, ciutat, estat, postal i telèfon. Rendiment és horrible. Ens adonem que rendiment empitjora (d'una manera no lineal) per a cada àmbit addicional podem actualitzar aquesta manera. És a dir, Si ens acaba d'actualitzar el nom representant de vendes, triga [x] quantitat de temps. Si actualitzem representant de vendes, address1, address2, ciutat, estat, cremallera, triga 10 vegades més.
Solució: Escriure un servei web (es poden trobar exemples de codi aquí) que es transmet en nom d'un proveïdor i torna altra vegada les dades de venedor. Llavors, assignar els camps d'aquesta manera. Encara que això sembla massa lent, hi va haver cap diferència posades en el rendiment quan podem assignada 1 camp enfront 8 camps. Com una gratificació afegida, els usuaris aconseguir un fresc "contactant amb el servidor" Cylon efecte mentre esperen per al formulari invocar i consumir els resultats del servei.
ACTUALITZACIÓ: Ens mai determinaren que la causa d'arrel d'aquest problema i mai superfície una altra vegada.
Notem que de sobte durant la implementació d'un lloc de desenvolupament, dos usuaris són incapaços d'accedir a una col·lecció de llocs. Els comptes poden autenticar al lloc principal, però quan es tracta d'accedir a una col·lecció particular, només aconsegueixen una pantalla en blanc. No hi ha errors que es Mostra, només una pàgina blanca en blanc.
Podem entrar com un col. lecció de lloc admin i proveu d'afegir un d'aquells usuaris com un administrador del lloc i aquesta vegada, en prémer "OK", arribem a aquest missatge:
S'ha produït una excepció. (Excepció de HRESULT: 0x 80020009 (DISP_E_EXCEPTION))
Vam passar algun temps a investigar això i per desgràcia, no va arribar a res útil. Hi havia alguns missatges en el registre de diagnòstic, però era difícil exactament relacionar-los amb aquest assumpte.
Al final, hem de suprimir la col·lecció de llocs i tornar-lo i que resolt.
Si puc esbrinar què provocava això en el futur, Vaig a actualitzar aquest post.