Buwanang Archive: Agosto 2007

Moss masusing paghahanap pagpapasadya — Kaso ang matter sa masusing paghahanap XSLT

Hindi ko baguhin ang masusing paghahanap XSLT napakadalas, kaya ito tila ako climbing maliit na burol sa bawat oras.

Aking pinakabagong araling ito ay: Kaso mahalaga kapag tumutukoy sa isang hanay. Sa aking masusing paghahanap, Ko ang mga haligi tinukoy bilang na ito:

<ugat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Mga Haligi>
<
Column Pangalan="GafTrainingInvoiceNumber" />
<
Column Pangalan="GafTrainingInvoiceLocation" />
<
Column Pangalan="WorkId"/>
<
Column Pangalan="Ranggo"/>
<
Column Pangalan="Pamagat"/>
<
Column Pangalan="May-akda"/>
<
Column Pangalan="Laki"/>
<
Column Pangalan="Landas"/>
<
Column Pangalan="Paglalarawan"/>
<
Column Pangalan="Sumulat"/>
<
Column Pangalan="SiteName"/>
<
Column Pangalan="CollapsingStatus"/>
<
Column Pangalan="HitHighlightedSummary"/>
<
Column Pangalan="HitHighlightedProperties"/>
<
Column Pangalan="Contentclass"/>
<
Column Pangalan="IsDocument"/>
<
Column Pangalan="PictureThumbnailURL"/>
</
Mga Haligi>
</
ugat>

Ang XLST na nagpapakita ng mga numero ng invoice at invoice lokasyon ay hindi naging:

<p>
Training Invoice Number: <xsl:halaga-ng piliin="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <xsl:halaga-ng piliin="GafTrainingInvoiceLocation"/>
</
p>

Gayunman, the select has to reference the property in all lower case, tulad ng sa:

<p>
Training Invoice Number: <xsl:halaga-ng piliin="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <xsl:halaga-ng piliin="gaftraininginvoicelocation"/>
</
p>


Until I corrected that, search results showed the labels (i.e. "Training Invoice Number") but no data.

Lumot: Halimbawa functional - Custom Data Uri

Negosyo Sitwasyon:

Enterprise-wide pagpapatupad ng Moss para sa pagmamanupaktura kumpanya na may 30+ mga site at ilang dosena corporate mga kagawaran.

Layunin ng Negosyo:

Sa kabila ng maraming mga grupo ng negosyo (kagawaran, lokasyon, at iba pa), tiyak na data ay dapat na pinananatili sa isang pandaigdigang antas. Halimbawa, isang makapangyarihan master list ng lahat ng pisikal na lokasyon ng mga kumpanya (e.g. manufacturing facility, warehouse locations, sales offices) should be maintained in a central location.

Technical Problem:

The enterprise taxonomy was implemented using multiple site collections. We would have liked to create the authoritative list of physical locations in a custom WSS list. Pagkatapos, when we needed to have a column in a content type (or a column added to a list or doc library) that contained corporate locations, we would create a column using the "lookup" datatype and point to this master list.

Unfortunately, lookup datatypes must access a source list "locally" meaning that our authoritative list cannot span site collections.

Teknikal na Solusyon:

Implement a new custom data type implemented based on SPField and represented as a DropDownList in the UI whose ListItems populate from the master WSS list.

We created a new site collection called "http://localhost/EnterpriseData". There, we created a custom list named "Corporate Locations". This list just uses the standard "Title" field to contain the list of actual corporate locations.

One follows several discrete steps to create a custom data type in WSS. They are:

  1. Define a class which inherits from SPField (one may inherit from other fields if required).

Here is the code for that:

publiko klase XYZZYCorporateLocationField : SPFieldText
{
publiko XYZZYCorporateLocationField
(SPFieldCollection patlang, pisi typeName, pisi displayName)
: base(patlang, typeName, displayName) { }

publiko XYZZYCorporateLocationField
(SPFieldCollection patlang, pisi displayName)
: base(patlang, displayName) { }

publiko magpawalang-bisa BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl control = bago XYZZYCorporateLocationFieldControl();
control.FieldName = ito.InternalName;
bumalik control;
} //get
} // fieldrenderingcontrol

publiko magpawalang-bisa pisi GetValidatedString(bagay halaga)
{
kung (ito.Required || value.ToString().Kapantay(String.Empty))
{
magtapon bago SPFieldValidationException ("Department is not assigned.");
}
bumalik base.GetValidatedString(halaga);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Define another class that inherits from the base field control, tulad ng sa:

publiko klase XYZZYCorporateLocationFieldControl : BaseFieldControl
{
protektado DropDownList XYZZYCorporateLocationSelector;

protektado magpawalang-bisa pisi DefaultTemplateName
{
get
{
bumalik "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

publiko magpawalang-bisa bagay Halaga
{
get
{
EnsureChildControls();
bumalik ito.XYZZYCorporateLocationSelector.SelectedValue;
} // get
nakatakda
{
EnsureChildControls();
ito.XYZZYCorporateLocationSelector.SelectedValue = (pisi)ito.ItemFieldValue;
} // nakatakda
} // override object Value

protektado magpawalang-bisa walang bisa CreateChildControls()
{

kung (ito.Field == sero || ito.ControlMode == SPControlMode.Display)
bumalik;

base.CreateChildControls();

ito.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

kung (ito.XYZZYCorporateLocationSelector == sero)
magtapon bago Kataliwasan("ERROR: Cannot load .ASCX file!");

kung (!ito.Page.IsPostBack)
{

paggamit (SPSite site = bago SPSite("http://localhost/enterprisedata"))
{
paggamit (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

foreach (Magtuhog XYZZYCorporateLocation sa currentList.Items)
{
kung (XYZZYCorporateLocation["Title"] == sero) magpatuloy;

pisi theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

ito.XYZZYCorporateLocationSelector.Items.Add
(bago ListItem(theTitle, theTitle));

} // foreach

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/enterprisedata")

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

The above code basically implements the logic for populating the DropDownList with values from the WSS custom list located at http://localhost/enterprisedata and named "Corporate Departments".

I defined both classes in a single .cs file, compiled it and put it into the GAC (strong required, mangyari pa).

  1. Implement a control template (.ascx) tulad ng ipinapakita:

<%@ Control Language="C#" Inherits="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version=12.0.0.0,Culture=neutral,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Magparehistro Tagprefix="wssawc" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Bersyon = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Magparehistro Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Bersyon = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="server">
<Template>
<asp:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</Template>
</
SharePoint:RenderingTemplate>

The above is saved into c:\program files\common files\microsoft shared\web server extensions\12\controltemplates.

  1. Sa wakas, we create an XML file to save into the …..\12\XML directory. This is CAML that defines our custom data type and for my example, looks like this:

<?xml salin="1.0" pag-encode="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Field Pangalan="TypeName">CorporateLocations</Field>
<
Field Pangalan="ParentType">Teksto</Field>
<
Field Pangalan="TypeDisplayName">Corporate Locations</Field>
<
Field Pangalan="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Field>
<
Field Pangalan="UserCreatable">TRUE</Field>
<
Field Pangalan="ShowInListCreate">TRUE</Field>
<
Field Pangalan="ShowInDocumentLibraryCreate">TRUE</Field>
<
Field Pangalan="ShowInSurveyCreate">TRUE</Field>
<
Field Pangalan="ShowInColumnTemplateCreate">TRUE</Field>
<
Field Pangalan="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Bersyon = 1.0.0.0, Culture = neutral, PublicKeyToken=b0b19e85410990c4</Field>
<
RenderPattern Pangalan="DisplayPattern">
<
Switch>
<
Expr>
<
Column />
</
Expr>

<Case Halaga=""/>

<Default>
<
HTML>
<![CDATA[
<span style="color:Red"><b>]]>
</
HTML>

<
Column SubColumnNumber="0" HTMLEncode="TRUE"/>

<HTML><![CDATA[</b></maikling panahon>]]></HTML>

</
Default>
</
Switch>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" and matches it up against the GAC’d assembly.

After moving all these bits into place, iisreset on the server and it should all start working nicely.

WSS: Pamamaraan para sa paglikha ng mga kahulugan CAML patlang.

Karagdagang mga kategorya: CAML

Here is a great posting by a fellow named "craig" sa isang diskarte para sa paghahanap ng CAML mga kahulugan para sa mga uri ng patlang ng nilalaman batay off ang real live na mga kahulugan mula sa isang site.

Ang kanyang pag-post sabi ni ang lahat ng ito. Sa madaling sabi:

  1. Lumikha ng isang uri ng nilalaman.
  2. Iugnay ito sa isang listahan.
  3. Buksan up ang listahan sa SharePoint Designer.
  4. Export to a "personal web package".
  5. Rename to a .cab.
  6. Extract the manifest.
  7. Find your content type and associated CAML.

WSS: Buod ng mga hakbang upang paganahin ang kapaki-pakinabang Tampok / Mga Sangkap ng / etc. Intellisense sa vs 2005

Karagdagang mga kategorya: Visual Studio 2005

Upang paganahin ang kapaki-pakinabang para sa intellisense Tampok, mga sangkap, etc sa visual studio 2005:

  1. I-access ang isang WSS server.
  2. Navigate to "c:\programa file karaniwang file Microsoft shared web server extension 12 TEMPLATE XML"
  3. Magbukas ng isa pang window explorer na tumuturo sa: "C:\Program Files Microsoft Visual Studio 8 Xml Schemas"
  4. Kopyahin ang sumusunod na mga file mula sa WSS server sa iyong vs 2005 schemas direktoryo:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. I-restart vs 2005
  6. Magdagdag ng isang bagong XML file sa isang proyekto.
  7. Mag-click sa katawan ng XML file.
  8. Sa ang mga katangian pane, click on "Schemas" and pick "wss.xsd" mula sa mga pagpipilian. (Ito ay hindi kinakailangan upang piliin ang iba pang mga xsd ni dahil sila ay isinangguni mula wss.xsd).

Intellisense Pinagana na ngayon para sa dokumento na iyon XML.

Tingnan dito para sa karagdagang impormasyon sa paksang ito at para sa mga tagubilin sa kung paano upang awtomatikong ugnay WSS intellisense sa anumang XML file.

WSS pagsusulit 70-541, Microsoft Windows SharePoint Serbisyo 3.0 – Application Development

Kinuha ko at nakapasa sa nabanggit sa itaas pagsubok na ito umaga. Nakita ko ang pagsusulit upang maging mahirap at patas.

May isang kamag-anak kakulangan ng impormasyon tungkol sa mga pagsusulit na ito sa web. Hindi ako sigurado kung bakit.

Malinaw naman ako ay hindi makakuha ng mga ito sa anumang detalye tungkol sa mga pagsusulit ko kinuha, ngunit tingin ko ang maaari kong ligtas na sabihin ang mga sumusunod na:

  1. Pagkatiwalaan ang link na ito: http://www.microsoft.com/learning/exams/70-541.mspx.

    Inililista nito ang kung ano ang kailangan mong malaman upang makapasa sa eksaminasyon at ito ay, IMO, napaka-tumpak.

  2. Ang link na rin Inirerekomenda Sa Loob ng Microsoft Windows SharePoint Serbisyo 3.0 sa pamamagitan ng Ted Pattison & Daniel Larson. Ang aklat na ito ay sumasaklaw sa halos lahat ng mga paksa na pagsubok ang address. May nakita akong ito upang maging mahusay sa at ng kanyang sarili na lampas simpleng pagsusulit prep. Ito ay nagbibigay ng mahusay na mga halimbawa at talagang nakuha sa akin iniisip tungkol sa ilang mga bago at kagiliw-giliw na mga bagay upang subukan. Kung nais mong laktawan ang ilang mga piraso sa aklat, lamang-cross-reference ang toc ng libro kasama ang mga item sa mga link mula sa itaas.
  3. Wala beats aktwal na hands-on na karanasan. Kung mayroon ka ng oras at interes, sundin kasama ng mga halimbawa sa aklat at pagkatapos ay i-eksperimento sa kanila. Magkakaroon ka ng isang mas madali ang oras sa pagsusulit pati na rin talagang matuto WSS application programming.

</dulo>Mag-subscribe sa aking blog!

Lumot / InfoPath Form Server (InfoPath 2007) drop-down na listahan ng pagganap

Karagdagang mga kategorya: InfoPath

Buod: Isang InfoPath 2007 bumuo deploy sa isang server Moss ay nagbibigay ng isang drop-down na listahan ng mga vendor na nakatali sa isang pasadyang listahan Moss. Sa pagpili ng isang vendor, panuntunan magtalaga mga halaga ng patlang sa isang maliit na bilang ng mga patlang ng teksto tulad ng sales rep pangalan, tirahan, lungsod, estado, zip at telepono. Pagganap ay kakila-kilabot. Napansin namin na pagganap ay makakakuha ng mas masahol pa (in a non-linear fashion) para sa bawat karagdagang patlang update namin ito paraan. Ibig sabihin, kung lang namin i-update ang sales rep pangalan, ito ay tumatagal ng [x] tagal ng oras. Kung update namin sales rep, address1, address2, lungsod, estado, humaging, ito ay tumatagal ng 10 beses na mas mahaba.

Solusyon: Magsulat ng isang web serbisyo (sample code na maaaring matagpuan dito) iyon ay naipasa sa ang pangalan ng isang vendor at ito ay nagbabalik pabalik ang mga detalye ng vendor. Pagkatapos, magtalaga ng mga patlang na ito paraan. Bagaman ito masyadong Mukhang mabagal, walang discernable pagkakaiba sa pagganap kapag kami itinalaga 1 field kumpara sa 8 patlang. Bilang karagdagang bonus, users get a cool "contacting the server" Cylon epekto habang naghihintay sila para sa form na paandarin at gumamit ng mga resulta ng serbisyo.

Lumot: Exception naganap. (Exception mula HRESULT: 0x80020009 (DISP_E_EXCEPTION))

I-UPDATE: Kami ay hindi kailanman natukoy sa root sanhi ng problemang ito at ito ay hindi kailanman palitawin muli.

Napansin namin sa panahon ng pagpapatupad ng isang pag-unlad ng site na bigla, dalawang gumagamit ay hindi maka-access ang isang site koleksyon. Mga account na iyon ay maaaring patunayan sa pangunahing site, ngunit kapag sinusubukang i-access ang isang partikular na koleksyon site, lang nila makakuha ng isang blangko screen. Walang mga error ipinapakita, lamang ng isang puting blangko pahina.

Kami mag-log in bilang isang admin ng site koleksyon at subukan upang magdagdag ng isa sa mga gumagamit na iyon bilang isang admin ng site at oras na ito, upon pressing "OK", makuha namin ang mensaheng ito:

Exception naganap. (Exception mula HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Namin na ginugol ng ilang oras pagsasaliksik na ito at sa kasamaang-palad, Hindi makabuo ng anumang bagay na kapaki-pakinabang. Nagkaroon ng mga mensahe sa mga diagnostic na log, ngunit ito ay mabuti upang eksaktong kaugnayan ang mga ito sa ang isyu na ito.

Sa katapusan, kami pagtanggal sa site koleksyon at muling lumikha nito at na malutas ito.

Kung malaman ko kung ano ang sanhi ito sa hinaharap, Kukunin ko i-update ang post na ito.