월별 아카이브: 8 월 2007

모스 고급 검색 사용자 지정 — 경우 고급 검색 XSLT에 상관

매우 자주 고급 검색 XSLT를 수정 하지 않습니다., 그래서 내가 때마다 작은 언덕을 등반 오전 것 같아.

이건 내 최신 강의: 경우 중요 한 열을 참조 하는 경우. 내 고급 검색에서, 나는 이것을로 정의 된 열:

<루트 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
>
<
이름="GafTrainingInvoiceNumber" />
<
이름="GafTrainingInvoiceLocation" />
<
이름="WorkId"/>
<
이름="순위"/>
<
이름="제목"/>
<
이름="저자"/>
<
이름="크기"/>
<
이름="경로"/>
<
이름="설명"/>
<
이름="쓰기"/>
<
이름="사이트 이름"/>
<
이름="CollapsingStatus"/>
<
이름="HitHighlightedSummary"/>
<
이름="HitHighlightedProperties"/>
<
이름="ContentClass"/>
<
이름="IsDocument"/>
<
이름="PictureThumbnailURL"/>
</
>
</
루트>

송장 번호와 송장 위치 표시 XLST 왔다:

<p>
훈련 송장 번호: <xsl:값의 선택="GafTrainingInvoiceNumber"/>
<
br></br>
훈련 송장 위치: <xsl:값의 선택="GafTrainingInvoiceLocation"/>
</
p>

그러나, 선택 모든 소문자에 있는 속성을 참조 하는, 마찬가지로:

<p>
훈련 송장 번호: <xsl:값의 선택="gaftraininginvoicenumber"/>
<
br></br>
훈련 송장 위치: <xsl:값의 선택="gaftraininginvoicelocation"/>
</
p>


나는 수정 때까지, 레이블을 보여 검색 결과 (즉. "훈련 송장 번호") 하지만 아무 데이터.

모스: 기능 예-사용자 정의 데이터 형식

비즈니스 시나리오:

제조 회사에 대 한 이끼의 엔터프라이즈 구현 30+ 사이트 및 몇 가지 12 개 기업 부서.

비즈니스 목표:

비즈니스 그룹의 군중에도 불구 하 고 (부서, 위치, 등), 글로벌 수준에서 특정 데이터를 유지 합니다.. 예를 들어, 회사의 모든 물리적 위치는 신뢰할 수 있는 마스터 목록 (예를 들어. 제조 시설, 창 고 위치, 영업 사무소) 중앙 위치에서 유지 되어야 합니다..

기술 문제:

기업 분류는 여러 사이트 모음을 사용 하 여 구현 된. 우리는 사용자 지정 WSS 목록에서 실제 위치 신뢰할 수 있는 목록을 만들 수 있으면 좋 겠. 다음, 우리는 콘텐츠 형식에 열을 필요로 할 때 (목록 또는 문서 라이브러리에 열 추가 또는) 기업의 위치를 포함는, 우리 "조회를 사용 하 여 열을 만들 것입니다." 데이터 형식 및이 마스터 목록에 포인트.

불행 하 게도, 조회 데이터 소스 목록 "로컬 액세스 해야 합니다." 우리의 신뢰할 수 있는 목록 사이트 모음에 걸쳐 있을 수 없습니다 의미.

기술 솔루션:

새 사용자 정의 데이터 형식에 따라 SPField을 구현 하 고 누구의 ListItems 마스터 WSS 목록에서 채우는 UI에 드롭다운 목록으로 표시 구현.

라는 새 사이트 모음을 만들었습니다. "http://localhost/EnterpriseData". 거기, "기업의 위치" 라는 사용자 지정 목록을 만들었습니다.. 이 목록은 표준 "제목 사용" 실제 기업의 위치 목록을 포함 하는 필드.

한 wss에서 사용자 정의 데이터 형식을 만드는 데 여러 개별 단계를 따릅니다.. 그들은:

  1. SPField에서 상속 하는 클래스 정의 (필요한 경우 하나 다른 분야에서 상속 받을 수 있습니다.).

다음은 그에 대 한 코드:

공용 클래스 XYZZYCorporateLocationField : SPFieldText
{
공용 XYZZYCorporateLocationField
(SPFieldCollection 필드, 문자열 typeName, 문자열 displayName)
: 자료(필드, typeName, displayName) { }

공용 XYZZYCorporateLocationField
(SPFieldCollection 필드, 문자열 displayName)
: 자료(필드, displayName) { }

공용 재정의 BaseFieldControl FieldRenderingControl
{
가져오기
{
BaseFieldControl 제어 = 새로운 내용 XYZZYCorporateLocationFieldControl();
제어 합니다. FieldName = .InternalName;
반환 제어;
} //가져오기
} // fieldrenderingcontrol

공용 재정의 문자열 GetValidatedString(개체 값)
{
만약 (.필수 || 값입니다. ToString().같음(문자열.빈))
{
던져 새로운 내용 SPFieldValidationException ("부서 할당 되지 않습니다.");
}
반환 자료.GetValidatedString(값);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. 기본 필드 컨트롤에서 상속 하는 다른 클래스 정의, 마찬가지로:

공용 클래스 XYZZYCorporateLocationFieldControl : BaseFieldControl
{
보호 드롭다운 목록 XYZZYCorporateLocationSelector;

보호 재정의 문자열 DefaultTemplateName
{
가져오기
{
반환 "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

공용 재정의 개체
{
가져오기
{
EnsureChildControls();
반환 .XYZZYCorporateLocationSelector입니다. SelectedValue;
} // 가져오기
설정
{
EnsureChildControls();
.XYZZYCorporateLocationSelector.SelectedValue = (문자열).ItemFieldValue;
} // 설정
} // 개체 값 재정의

보호 재정의 void CreateChildControls()
{

만약 (.필드 = = null || .ControlMode = = SPControlMode.디스플레이)
반환;

자료.CreateChildControls();

.XYZZYCorporateLocationSelector =
(드롭다운 목록)FindControl TemplateContainer입니다.("XYZZYCorporateLocationSelector");

만약 (.XYZZYCorporateLocationSelector = = null)
던져 새로운 내용 예외("오류: 로드할 수 없습니다. ASCX 파일!");

만약 (!.IsPostBack 페이지입니다.)
{

사용 하 여 (SPSite 사이트 = 새로운 내용 SPSite("http://localhost/enterprisedata"))
{
사용 하 여 (SPWeb 웹 사이트를 =. OpenWeb())
{

SPList currentList = 웹. 목록["기업의 위치"];

foreach (SPItem XYZZYCorporateLocation 에서 currentList.Items)
{
만약 (XYZZYCorporateLocation["제목"] == null) «««;

문자열 theTitle;
theTitle = XYZZYCorporateLocation["제목"].ToString();

.XYZZYCorporateLocationSelector.Items.Add
(새로운 내용 ListItem(theTitle, theTitle));

} // foreach

} // spweb 웹을 사용 하 여 site.openweb =()
} // spsite 사이트를 사용 하 여 새로운 spsite =("http://localhost/enterprisedata ")

} // 하지 않을 경우 포스트백

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

위의 코드는 기본적으로 WSS 사용자 지정 목록에 있는 값으로 DropDownList를 채우기 위한 논리를 구현 http://localhost/enterprisedata 및 명명 된 "기업 부서".

단일.cs 파일에 있는 두 클래스를 정의, 그것을 컴파일하고 GAC에 넣어 (강한 필요, 물론).

  1. 컨트롤 템플릿 구현 (.ascx) 같이:

<%@ 제어 언어= "C#" 상속="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,버전 12.0.0.0, 문화 = 중립 =,Publickeytoken 등 = 71e9bce111e9429c" compilationMode"항상 =" %>
<%
@ 등록 Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" 어셈블리="Microsoft.SharePoint, 버전 12.0.0.0 =, 문화 = 중립, Publickeytoken 등 = 71e9bce111e9429c" %> <%@ 등록 Tagprefix"SharePoint =" Namespace="Microsoft.SharePoint.WebControls" 어셈블리="Microsoft.SharePoint, 버전 12.0.0.0 =, 문화 = 중립, Publickeytoken 등 = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID"XYZZYCorporateLocationFieldControl =" runat"서버" =>
<서식 파일>
<asp:드롭다운 목록 ID"XYZZYCorporateLocationSelector =" runat"서버 =" />
</서식 파일>
</
SharePoint:RenderingTemplate>

위의 c에 저장 됩니다.:\프로그램 파일 공통 파일 마이크로 소프트 파일 서버 extensions12controltemplates.

  1. 마지막으로, 우리가 만들 XML 파일에 저장 하는... 12XML 디렉터리. 이것은 CAML 우리의 사용자 정의 데이터 형식을 정의 하 고 내 예, 이 처럼 보이는:

<?xml 버전="1.0" 인코딩="u t f-8" ?>
<
Fieldtype>
<
FieldType>
<
필드 이름="TypeName">CorporateLocations</필드>
<
필드 이름="ParentType">텍스트</필드>
<
필드 이름="TypeDisplayName">회사 위치</필드>
<
필드 이름="TypeShortDescription">제조 또는 다른 시설을 포함 한 모든 XYZZY 기업 위치.</필드>
<
필드 이름="UserCreatable">사실</필드>
<
필드 이름="ShowInListCreate">사실</필드>
<
필드 이름="ShowInDocumentLibraryCreate">사실</필드>
<
필드 이름="ShowInSurveyCreate">사실</필드>
<
필드 이름="ShowInColumnTemplateCreate">사실</필드>
<
필드 이름="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, 버전 1.0.0.0 =, 문화 = 중립, Publickeytoken 등 = b0b19e85410990c4</필드>
<
RenderPattern 이름="DisplayPattern">
<
스위치>
<
Expr>
<
/>
</
Expr>

<케이스 =""/>

<기본>
<
HTML>
<![CDATA[
<스팬 스타일 = "색상:레드 "><b>]]>
</
HTML>

<
SubColumnNumber="0" HTMLEncode="사실"/>

<HTML><![CDATA[</b></범위>]]></HTML>

</
기본>
</
스위치>

</
RenderPattern>
</
FieldType>
</
Fieldtype>
이 XML 파일 WSS "라이브러리에 사용자 지정 데이터 형식을 추가합니다" GAC에 대하여 일치 했다 어셈블리.

곳으로 모든이 비트를 이동한 후, 서버에서 iisreset 멋지게 작업 모든 시작을 한다.

WSS: CAML 필드 정의 만들기 위한 기술.

추가 범주: CAML

여기 "크레이그 라는 동료에 의해 훌륭한 게시" 사이트에서 실제 라이브 정의 기반으로 필드 콘텐츠 형식의 CAML 정의 찾는 기술에.

그의 게시 다 나와 있어요. 간략 한 있음:

  1. 콘텐츠 형식 만들기.
  2. 목록에 연결.
  3. SharePoint Designer와 리스트를 엽니다.
  4. "" 개인 웹 패키지를 내보내기.
  5. 한.cab에 이름 바꾸기.
  6. 매니페스트를 추출.
  7. 콘텐츠 형식 및 연결 된 CAML을 찾을.

WSS: 유용한 기능/요소/etc 수 있도록 요약 단계. Vs Intellisense 2005

추가 범주: Visual Studio 2005

기능에 대 한 유용한 intellisense를 활성화 하려면, 요소, visual studio에서 등 2005:

  1. WSS 서버에 액세스.
  2. "C로 이동:\프로그램 파일 공통 파일 마이크로 소프트 파일 서버 extensions12TEMPLATEXML"
  3. 가리키는 또 다른 windows 탐색기를 열으십시오: "C:\프로그램을 마이크로 소프트 비주얼 스튜디오 8XmlSchemas"
  4. 당신의 대를 WSS 서버에서 다음 파일을 복사 2005 스키마 디렉터리:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. 대 다시 시작 2005
  6. 새 XML 파일을 프로젝트에 추가.
  7. XML 파일의 본문에 클릭.
  8. 속성 창에서, "스키마에 클릭" "wss.xsd를 선택 하 고" 선택 항목에서. (이후 그들은 wss.xsd에서 참조 하는 다른 xsd를 선택할 필요는 없습니다.).

Intellisense는 이제 해당 XML 문서에 대 한 활성화.

참조 여기 자세한 내용은이 주제에 대 한 지침은 WSS intellisense 모든 XML 파일에 자동으로 연결 하는 방법에 대 한.

WSS 시험 70-541, Microsoft Windows SharePoint Services 3.0 – 응용 프로그램 개발

나 갔고 오늘 아침 위에서 언급 한 테스트를 통과. 시험을 어렵고 공정 발견.

웹에서이 시험에 대 한 정보의 상대적인 부족이 이다. 나 확실 하지 않다 이유.

나 분명히 했다 시험에 대 한 모든 세부 사항에 보내 주지 않을, 안전 하 게 다음 말할 수 있다고 생각 하지만:

  1. 이 링크를 신뢰: http://www.microsoft.com/learning/exams/70-541.mspx.

    그것은 당신이 시험 하 고 통과 알 필요가 나열, 아이 모, 매우 정확한.

  2. 링크 또한 것이 좋습니다. 내부 Microsoft Windows SharePoint Services 3.0 Ted Pattison에 의해 & Daniel 라 슨. 이 책 테스트 주소는 거의 모든 주제를 다루고. 위대한 사람이 될 자체의 간단한 시험 준비 넘어 발견. 좋은 예를 제공 하 고 정말 내 시도를 몇 가지 새롭고 흥미로운 것 들에 대 한 생각이 야. 책에 몇 비트를 건너 뛰 려는 경우, 그냥 책의 목차 위의 링크에 있는 항목을 상호 참조.
  3. 아무것도 실제 실습을 할 땐. 만약 당신이 시간과 관심, 책의 예제를 따라 하 고 그 후 그들과 함께 실험. 당신은 거 야 시험에 쉽게 시간을가지고 뿐만 아니라 정말 WSS 응용 프로그래밍을 배울.

</끝>내 블로그를 구독!

모스 / InfoPath 양식 서버 (InfoPath 2007) 드롭-다운 목록 성능

추가 범주: InfoPath

요약: InfoPath 2007 모스 서버에 배포 하는 양식 사용자 지정 모스 목록에 연결 하는 공급 업체의 드롭 다운 목록을 제공 합니다.. 공급 업체를 선택할 때, 영업 담당자 이름과 같은 텍스트 필드의 소수에 필드 값을 할당 하는 규칙, 주소, 도시, 상태, 우편 및 전화. 성능 끔 찍 하다. 우리는 성능을 악화 주의 (비 선형) 이 이런식으로 각 추가 필드에 대 한 업데이트. 즉, 만약 우리가 단지 영업 담당자 이름 업데이트, 그것은 걸립니다. [x] 시간. 우리 영업 담당자를 업데이 트 하는 경우, address1, 주소 2, 도시, 상태, 우편 번호, 그것은 걸립니다. 10 배 이상.

솔루션: 웹 서비스 작성 (샘플 코드를 찾을 수 있습니다. 여기) 그 공급 업체의 이름으로 전달 되 고 다시 공급 업체 세부 정보 반환. 다음, 이 방법으로 필드를 할당. 이 너무 보인다 비록 느린, 우리가 할당 하는 경우 성능에 뚜렷한 차이가 없었다 1 대 분야 8 필드. 추가한 상 여로, 사용자가 "서버에 게 연락 하는 멋진" 사일런 호출 하 고 서비스 결과 소비 형태를 기다리는 동안 효과.

모스: 예외가 발생 했습니다.. (HRESULT에서 예외가: 0x 80020009 (DISP_E_EXCEPTION))

업데이트: 우리가 결코 다시이 문제와 결코 표면 그것의 근본 원인을 결정.

우리는 갑자기 개발 사이트의 구현 시 통지, 두 사용자가 사이트 모음에 액세스할 수 없는. 해당 계정의 주요 사이트에 인증할 수 있습니다., 그러나 특정 사이트 모음에 액세스 하려고 할 때, 그들은 단지 텅 빈 스크린을 얻을. 오류 표시, 그냥 하얀 빈 페이지.

우리는 사이트 컬렉션 관리자로 로그인 하 고 사이트 관리자 및이 시간으로 이러한 사용자 중 하나를 추가 하려고, "확인"을 누르면 시, 우리는이 메시지를 받을:

예외가 발생 했습니다.. (HRESULT에서 예외가: 0x 80020009 (DISP_E_EXCEPTION))

우리가이 연구 시간을 할애 하 고 불행 하 게도, 유용한 아무것도 오지 않 았 어. 진단 로그에 일부 메시지가 있었습니다., 하지만 그것은 정확 하 게이 문제와 상관 힘 들었다.

끝에서, 사이트 모음을 삭제 하 고 다시 그 우리는 그것을 해결.

무슨 미래에이 그림 밖으로 하는 경우 발생, 이 게시물을 업데이 트 거 야.