Poño un anuncio para vender o meu coche en Bergen County, NJ on Sunday night. I received several inquiries via email shortly thereafter and closed the deal with someone on Tuesday night.
Case bo de máis para ser verdade …
Poño un anuncio para vender o meu coche en Bergen County, NJ on Sunday night. I received several inquiries via email shortly thereafter and closed the deal with someone on Tuesday night.
Case bo de máis para ser verdade …
Non modificar procura avanzada XSLT, moitas veces, entón parece que estou escalando pequenos outeiros cada vez.
O meu máis novo lección é esta: Se importa ao facer referencia a unha columna. Na miña busca avanzada, I columnas definido como esta:
<raíz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Columnas>
<Columna Nome="GafTrainingInvoiceNumber" />
<Columna Nome="GafTrainingInvoiceLocation" />
<Columna Nome="WorkId"/>
<Columna Nome="Posición"/>
<Columna Nome="Título"/>
<Columna Nome="Autor"/>
<Columna Nome="Tamaño"/>
<Columna Nome="Camiño"/>
<Columna Nome="Descrición"/>
<Columna Nome="Escribir"/>
<Columna Nome="Nome_do_Site"/>
<Columna Nome="CollapsingStatus"/>
<Columna Nome="HitHighlightedSummary"/>
<Columna Nome="HitHighlightedProperties"/>
<Columna Nome="Contentclass"/>
<Columna Nome="IsDocument"/>
<Columna Nome="PictureThumbnailURL"/>
</Columnas>
</raíz>
O XLST que exhibe o número da nota fiscal e localización factura fora:
<p>
Training Invoice Number: <XSL:valor de seleccionar="GafTrainingInvoiceNumber"/>
<br></br>
Training Invoice Location: <XSL:valor de seleccionar="GafTrainingInvoiceLocation"/>
</p>
Con todo, o select ten que referenciar a propiedade en todas as letras minúsculas, como no:
<p>
Training Invoice Number: <XSL:valor de seleccionar="gaftraininginvoicenumber"/>
<br></br>
Training Invoice Location: <XSL:valor de seleccionar="gaftraininginvoicelocation"/>
</p>
Until I corrected that, search results showed the labels (i.e. "Training Invoice Number") but no data.
Escenario empresarial:
En toda a empresa a implantación de Moss para empresa de construción con 30+ sitios e unha ducia de departamentos corporativos.
Negocios Obxectivo:
A pesar de un gran número de grupos empresariais (departamentos, locais, etc), certos datos debe ser mantida a un nivel mundial. Por exemplo, unha lista mestra autorizada de todos os lugares físicos da empresa (e.g. instalacións de produción, localizacións de almacén, oficinas de vendas) a manter nun lugar central.
Problema Técnico:
A taxonomía empresa implementado empregando varios conxuntos de sitios. Teriamos gusto de crear a lista oficial de lugares físicos nunha lista personalizada WSS. Entón, cando necesitamos ter unha columna nun tipo de contidos (ou unha columna engadida a unha lista ou biblioteca doc) que as empresas locais contidos, we would create a column using the "lookup" tipo de datos e apuntar a esta lista mestra.
Desafortunadamente, lookup datatypes must access a source list "locally" o que significa que a nosa lista oficial non pode abranguer conxuntos de sitios.
Solución Técnica:
Aplicar un novo tipo de datos personalizado aplicado na base SPField e representado como un DropDownList no UI cuxo ListItems cubrir a partir da lista WSS mestre.
Creamos unha nova colección sitio chamado "http://localhost/EnterpriseData". Alí, we created a custom list named "Corporate Locations". This list just uses the standard "Title" campo para conter a lista de lugares corporativos reais.
Un segue varias etapas distintas para crear un tipo de datos personalizado na WSS. Son:
Aquí está o código para que:
público clase XYZZYCorporateLocationField : SPFieldText
{
público XYZZYCorporateLocationField
(SPFieldCollection campos, corda typeName, corda displayName)
: base(campos, typeName, displayName) { }
público XYZZYCorporateLocationField
(SPFieldCollection campos, corda displayName)
: base(campos, displayName) { }
público substituír BaseFieldControl FieldRenderingControl
{
obter
{
BaseFieldControl control = novo XYZZYCorporateLocationFieldControl();
control.FieldName = este.InternalName;
volver control;
} //obter
} // fieldrenderingcontrol
público substituír corda GetValidatedString(obxecto valor)
{
se (este.Required || value.ToString().Igual(Corda.Baleiro))
{
xogar novo SPFieldValidationException ("Department is not assigned.");
}
volver base.GetValidatedString(valor);
} // getvalidatedstring
} // XYZZYCorporateLocation
público clase XYZZYCorporateLocationFieldControl : BaseFieldControl
{
protexido DropDownList XYZZYCorporateLocationSelector;
protexido substituír corda DefaultTemplateName
{
obter
{
volver "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName
público substituír obxecto Valor
{
obter
{
EnsureChildControls();
volver este.XYZZYCorporateLocationSelector.SelectedValue;
} // obter
conxunto
{
EnsureChildControls();
este.XYZZYCorporateLocationSelector.SelectedValue = (corda)este.ItemFieldValue;
} // conxunto
} // override object Value
protexido substituír invalidar CreateChildControls()
{
se (este.Field == nulo || este.ControlMode == SPControlMode.Ver)
volver;
base.CreateChildControls();
este.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");
se (este.XYZZYCorporateLocationSelector == nulo)
xogar novo Excepción("ERROR: Cannot load .ASCX file!");
se (!este.Page.IsPostBack)
{
utilización (SPSite site = novo SPSite("Http://localhost / enterprisedata"))
{
utilización (SPWeb web = site.OpenWeb())
{
SPList currentList = web.Lists["Corporate Locations"];
foreach (SPItem XYZZYCorporateLocation en currentList.Items)
{
se (XYZZYCorporateLocation["Title"] == nulo) continuar;
corda thetitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();
este.XYZZYCorporateLocationSelector.Items.Add
(novo Listitem(thetitle, thetitle));
} // foreach
} // using spweb web = site.openweb()
} // using spsite site = new spsite("Http://localhost/enterprisedata")
} // if not a postback
} // CreateChildControls
} // XYZZYCorporateLocationFieldControl
O código anterior, basicamente aplica a lóxica para cubrir o DropDownList cos valores da lista personalizada WSS situado na http://localhost/enterprisedata and named "Corporate Departments".
Eu define ambas clases nun arquivo de cs único., compilado-lo e colocar-lo no GAC (forte necesaria, claro).
<%@ Control Linguaxe="C#" Herda="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version = 12.0.0.0, Culture = neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%@ Rexistrarse Tagprefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" Montaxe="Microsoft.SharePoint, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Rexistrarse Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Montaxe="Microsoft.SharePoint, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="server">
<Modelo>
<áspide:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</Modelo>
</SharePoint:RenderingTemplate>
A descrición anterior é gardado en c:\Arquivos de programas Arquivos comúns Microsoft Shared Web Server Extensions 12 CONTROLTEMPLATES.
<?xml versión="1.0" codificación="utf-8" ?>
<FieldTypes>
<FieldType>
<Campo Nome="TypeName">CorporateLocations</Campo>
<Campo Nome="ParentType">Texto</Campo>
<Campo Nome="TypeDisplayName">Corporate Locations</Campo>
<Campo Nome="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Campo>
<Campo Nome="UserCreatable">TRUE</Campo>
<Campo Nome="ShowInListCreate">TRUE</Campo>
<Campo Nome="ShowInDocumentLibraryCreate">TRUE</Campo>
<Campo Nome="ShowInSurveyCreate">TRUE</Campo>
<Campo Nome="ShowInColumnTemplateCreate">TRUE</Campo>
<Campo Nome="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Version = 1.0.0.0, Culture = neutral, PublicKeyToken=b0b19e85410990c4</Campo>
<RenderPattern Nome="DisplayPattern">
<Cambiar>
<Expr>
<Columna />
</Expr>
<No caso de Valor=""/>
<Omisión>
<HTML>
<![CDATA[<span style="color:Red"><b>]]>
</HTML>
<Columna SubColumnNumber="0" HTMLEncode="TRUE"/>
<HTML><![CDATA[</b></van>]]></HTML>
</Omisión>
</Cambiar>
</RenderPattern>
</FieldType>
</FieldTypes>
This XML file adds the custom data type to the WSS "library" e compara-se contra o conxunto GAC'd.
Despois de se cambiar todos eses bits no seu lugar, iisreset no servidor e todo debe comezar a traballar moi ben.
Categoría adicional: CAML
Aquí is a great posting by a fellow named "craig" nunha técnica para atopar definicións CAML para tipos de contido de campo baseado fóra definicións reais en directo de un sitio web.
A súa mensaxe xa di todo. Pronto:
Categorías adicionais: Visual Studio 2005
Para activar o intellisense útil para funcións, elementos, etc no visual studio 2005:
Intellisense está activado para este documento XML.
Ver aquí para máis información sobre este asunto e para obter instrucións sobre como asociar automaticamente intellisense WSS con calquera arquivo XML.
Eu tomei e pasou a proba mencionado esta mañá. Penso o exame ser difícil e xusto.
Hai unha relativa escaseza de información sobre este exame na web. Non sei por que.
Eu, obviamente, non vai entrar en ningún detalle sobre o exame tomei, pero eu creo que podo seguramente dicir o seguinte:
El lista o que precisa saber para pasar o exame e é, IMO, moi precisos.
</final>Rexístrate para o meu blog!
Categoría adicional: InfoPath
Resumo: Un InfoPath 2007 formar implantado nun servidor Moss ofrece unha lista desplegable de provedores vinculados a unha lista MOSS personalizado. Ao seleccionar un provedor, normas de asignar valores de campo a un puñado de campos de texto, como vendas nome rep, enderezo, cidade, Estado, zip e teléfono. O desempeño é horrible. Notamos que o rendemento empeora (in a non-linear fashion) para cada campo adicional que actualizar esta forma. É dicir,, se só actualizar o nome do representante de vendas, leva [x] cantidade de tempo. Se atualizarmos representante de vendas, address1, address2, cidade, Estado, zip, leva 10 veces maior.
Solución: Escribir un servizo web (código de exemplo pódese atopar aquí) que se transmite en nome dun provedor e regresa de novo a información do provedor. Entón, asignar os campos deste xeito. Aínda que iso tamén parece lento, Non houbo diferenza perceptible no desempeño cando atribuímos 1 campo contra 8 campos. Como un extra adicional, users get a cool "contacting the server" Cylon efecto, mentres se espera para a forma de invocar e consumir os resultados de servizos.
Actualización: Nunca determinou a causa raíz do problema e nunca vir á tona de novo.
Notamos durante a implementación dun sitio web de desenvolvemento que, de súpeto, dous usuarios son capaces de acceder a un conxunto de sitios. Estas contas poden acceder ao sitio principal, pero ao tentar acceder a unha colección sitio web específico, they just get a blank screen. No errors displayed, just a white blank page.
We log in as a site collection admin and try to add one of those users as a site admin and this time, upon pressing "OK", we get this message:
Excepción. (Excepción de HRESULT: 0x80020009 (DISP_E_EXCEPTION))
We spent some time researching this and unfortunately, didn’t come up with anything useful. There were some messages in the diagnostic log, but it was hard to exactly correlate them with this issue.
A finais, we deleting the site collection and re-created it and that solved it.
If I figure out what caused this in future, Vou actualizar este post.