버겐 카운티에서 내 차 판매 분류 된 광고 게시, 일요일 밤에 뉴저지. 잠시 후 이메일을 통해 몇 가지 문의 접수 하 고 화요일 밤에 누군가와 거래를 폐쇄.
거의 너무 사실 좋은 것 …
버겐 카운티에서 내 차 판매 분류 된 광고 게시, 일요일 밤에 뉴저지. 잠시 후 이메일을 통해 몇 가지 문의 접수 하 고 화요일 밤에 누군가와 거래를 폐쇄.
거의 너무 사실 좋은 것 …
매우 자주 고급 검색 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에서 사용자 정의 데이터 형식을 만드는 데 여러 개별 단계를 따릅니다.. 그들은:
다음은 그에 대 한 코드:
공용 클래스 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
공용 클래스 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에 넣어 (강한 필요, 물론).
<%@ 제어 언어= "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.
<?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 멋지게 작업 모든 시작을 한다.
추가 범주: CAML
여기 "크레이그 라는 동료에 의해 훌륭한 게시" 사이트에서 실제 라이브 정의 기반으로 필드 콘텐츠 형식의 CAML 정의 찾는 기술에.
그의 게시 다 나와 있어요. 간략 한 있음:
추가 범주: Visual Studio 2005
기능에 대 한 유용한 intellisense를 활성화 하려면, 요소, visual studio에서 등 2005:
Intellisense는 이제 해당 XML 문서에 대 한 활성화.
참조 여기 자세한 내용은이 주제에 대 한 지침은 WSS intellisense 모든 XML 파일에 자동으로 연결 하는 방법에 대 한.
나 갔고 오늘 아침 위에서 언급 한 테스트를 통과. 시험을 어렵고 공정 발견.
웹에서이 시험에 대 한 정보의 상대적인 부족이 이다. 나 확실 하지 않다 이유.
나 분명히 했다 시험에 대 한 모든 세부 사항에 보내 주지 않을, 안전 하 게 다음 말할 수 있다고 생각 하지만:
그것은 당신이 시험 하 고 통과 알 필요가 나열, 아이 모, 매우 정확한.
</끝>내 블로그를 구독!
추가 범주: InfoPath
요약: InfoPath 2007 모스 서버에 배포 하는 양식 사용자 지정 모스 목록에 연결 하는 공급 업체의 드롭 다운 목록을 제공 합니다.. 공급 업체를 선택할 때, 영업 담당자 이름과 같은 텍스트 필드의 소수에 필드 값을 할당 하는 규칙, 주소, 도시, 상태, 우편 및 전화. 성능 끔 찍 하다. 우리는 성능을 악화 주의 (비 선형) 이 이런식으로 각 추가 필드에 대 한 업데이트. 즉, 만약 우리가 단지 영업 담당자 이름 업데이트, 그것은 걸립니다. [x] 시간. 우리 영업 담당자를 업데이 트 하는 경우, address1, 주소 2, 도시, 상태, 우편 번호, 그것은 걸립니다. 10 배 이상.
솔루션: 웹 서비스 작성 (샘플 코드를 찾을 수 있습니다. 여기) 그 공급 업체의 이름으로 전달 되 고 다시 공급 업체 세부 정보 반환. 다음, 이 방법으로 필드를 할당. 이 너무 보인다 비록 느린, 우리가 할당 하는 경우 성능에 뚜렷한 차이가 없었다 1 대 분야 8 필드. 추가한 상 여로, 사용자가 "서버에 게 연락 하는 멋진" 사일런 호출 하 고 서비스 결과 소비 형태를 기다리는 동안 효과.
업데이트: 우리가 결코 다시이 문제와 결코 표면 그것의 근본 원인을 결정.
우리는 갑자기 개발 사이트의 구현 시 통지, 두 사용자가 사이트 모음에 액세스할 수 없는. 해당 계정의 주요 사이트에 인증할 수 있습니다., 그러나 특정 사이트 모음에 액세스 하려고 할 때, 그들은 단지 텅 빈 스크린을 얻을. 오류 표시, 그냥 하얀 빈 페이지.
우리는 사이트 컬렉션 관리자로 로그인 하 고 사이트 관리자 및이 시간으로 이러한 사용자 중 하나를 추가 하려고, "확인"을 누르면 시, 우리는이 메시지를 받을:
예외가 발생 했습니다.. (HRESULT에서 예외가: 0x 80020009 (DISP_E_EXCEPTION))
우리가이 연구 시간을 할애 하 고 불행 하 게도, 유용한 아무것도 오지 않 았 어. 진단 로그에 일부 메시지가 있었습니다., 하지만 그것은 정확 하 게이 문제와 상관 힘 들었다.
끝에서, 사이트 모음을 삭제 하 고 다시 그 우리는 그것을 해결.
무슨 미래에이 그림 밖으로 하는 경우 발생, 이 게시물을 업데이 트 거 야.