카테고리 아카이브: SharePoint 개발

간단한 설명: “값이 예상된 범위 내에서 떨어지지 않는다.”

업데이트: 익명 포스터 왼쪽 내부 이름에 대 한 좋은 의견. 그것을 읽고 해야 합니다..

이벤트 수신기 및 다른 참조 하는 코드 개체 모델을 통해 SharePoint 목록 항목을 작업할 때, 내가 자주 실수 런타임에이 오류를 생성 하는:

오류 로드 하 고 이벤트 수신기 Conchango.xyzzyEventReceiver xyzzy 실행, 버전 1.0.0.0 =, 문화 = 중립, Publickeytoken 등 = 0dc50a750396c3ac. 추가 정보는 아래. : 값이 예상된 범위 내에서 떨어지지 않는다.

이 잠재적으로 여러 가지 방법으로 발생 하는 상당히 일반 오류 라고 생각. 그러나, 하나의 간단한 설명이입니다는 내가 오전 참조 하지 필드 올바르게. 경우에 필드 이름이 "기한", 나 이런 이벤트 수신기에 그것을 참조 해야 합니다.:

속성입니다.ListItem["기한"]

때 철자 또는 잘못 된 경우 필드를 참조할 때 사용, SharePoint에서는 위의 런타임 오류를 언급. 예를 들어, 이것은 잘못 이다:

속성입니다.ListItem["기한"]

</끝>

내 블로그를 구독.

테크노 태그:

빠른 & 쉬운: 폴더를 만들고 콘텐츠 형식에 할당 (또는, 당신의 Kpi와도 먹을)

KPI의 문제를 해결 하기 위해 여기에 대해 쓴, 내가 몇 가지 테스트 했 고 그들은 문서에 대 한 작업 또는 목록 항목에 메타 데이터 폴더에 대 한 해당 KPI의 작품을 발견. 나는 새로운 콘텐츠 형식을 만들어 그것을 밖으로 폴더 콘텐츠 형식에 기반 하 고 다음 몇 가지 필드 추가 증명. 일부 지표를 생성 하 고 Kpi 예상 대로 작동 하는 자신에 게 입증. 이것은 환영 뉴스. 그것은 완벽 한, 때문에 드릴 다운에서 폴더에 대 한 KPI는 정확 하 게 당신이 원하는. 이것은 내 경우에는 너무 많은 단점 때문에 1) 최종 사용자가 어떤 잘 모르는 고 2) 드릴 다운 폴더에 간다. 그들은 폴더 이름을 클릭 하 고 항목에서. 그것은 한 두 번 클릭, 세상의 종말 되지 않습니다.

이 일을 하 고 있었는데 친절 하 게 흘 렀 다. 업로드 되는 모든 문서에 대 한 폴더를 만드는 거 야. 이 이벤트 수신기를 통해 이루어집니다.. 결과적으로, 그것은 계속에 케이크 한 조각에 상위 폴더의 파일 때문에 배관 공사는 이미 자체에서 KPI 기반 메타 데이터와 동기화 메타 데이터. This allows me to have my KPI’s and eat them too 🙂

폴더를 추가 하 고 다음 내 사용자 지정 KPI 친화적인 콘텐츠 형식에이 새 폴더의 콘텐츠 형식을 설정 하는 이벤트 수신기를 수정. 코드의이 비트는 목적을 달성을 했다:

 SPFolderCollection srcFolders = targetWeb.GetFolder("문서").하위 폴더;
  SPFolder addedFolder = srcFolders.Add(속성입니다.ListItem.ID.ToString());
  SPContentTypeId kpiCT = 새로운 내용 SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["콘텐츠 형식 ID"] kpiCT =;
  addedFolder.Item.Update();

실제 콘텐츠 형식 ID를 찾으려면, 사이트 설정을 통해 해당 콘텐츠 형식을 액세스 및 복사/붙여 넣은 그것 같이 URL에서:

이미지

</끝>

내 블로그를 구독!

테크노 태그: ,

신속 하 고 쉽게: 이벤트 수신기에서는 SPListItem의 SPFolder를 얻을

내가 그것을 인정 하 긴 싫지만, 하지만이 한 모든 싸 워 하루. 내 이벤트 수신기 상위 폴더의 필드를 업데이트 하는 데 필요한. 약간이 그것을 하는 방법을 보여 줍니다.:

개인 void UpdateParentFolder(SPItemEventProperties 속성)
{

SPFolder thisItemFolder 속성을 =.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ 승인 상태"] = "좋은 뉴스, 모두!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

이 경우에, 문서 라이브러리와 함께 일하고 그리고 속성 ItemAdded 이벤트에서 오고 있다.

이 트릭은 항목 자체에서 직접 항목의 SPFolder를 얻을 수 없습니다. (즉. 속성입니다.ListItem.Folder은 null입니다.). 대신, 목록 항목의 관련된 파일을 이동 하 고 파일의 폴더를 얻을.

</끝>

내 블로그를 구독!

테크노 태그:

아직 또 다른 이벤트 수신자 디버깅 트릭

나는 확실히이와 같이 첫 번째 사람이 아니에요. 그러나, 난 커뮤니티에 세심 한 관심을 지불 하는 지난 7 월 시작 이후이 같은 트릭을 게시 하는 사람이 없는데. 그래서, 그것은이 신속 하 고 쉽게 디버그 팁 게시물을 것 이라고 생각.

이 오류를 생성 하기 시작 하는 이벤트 수신기에서 일하고 있는 12 하이브:

오류 로드 하 고 이벤트 수신기 Conchango.xyzzyEventReceiver xyzzy 실행, 버전 1.0.0.0 =, 문화 = 중립, Publickeytoken 등 = blahbalhbalh. 추가 정보는 아래. : 개체 참조가 개체의 인스턴스로 설정 되지.

난 내 코드/배포/테스트 사이클 중 하나에 너무 많은 일을 했다 때문에 어디 나이 버그를 도입 했다 몰 랐 어 요.

나는 시도 했다 이 솔루션 SharePoint의 기대와 함께 거기에 나 pdb를 얻을 12 하이브 스택 추적 표시, 하지만 행운. 난 모 르 겠 가능 하다 고 누군가가 않습니다., 내게 알려 주십시오 🙂

수 아는 자신의 로그 메시지를 작성 합니다 12 하이브. 솔직히, 내가 원하는 뭔가 좀 덜 무 섭 고 빠르게 구현 하.

그것은 내게 내가 적어도 잡는 다시이 같은 일반적인 예외를 throw 하 여 몇 가지 기본 추적 정보를 얻을 수 발생:

  시도 {
    UpdateEditionDate(속성);
  }
  catch (예외 e)
  {
    던져 새로운 내용 예외("발송자, UpdateEditionDate(): 예외: [" + e.ToString() + "].");
  }

이에 나타났다는 12 thusly 하이브:

오류 로드 하 고 이벤트 수신기 Conchango.xyzzyEventReceiver xyzzy 실행, 버전 1.0.0.0 =, 문화 = 중립, Publickeytoken 등 = blahblahblah. 추가 정보는 아래. : 발송자, UpdateEditionDate(): 예외: [NullReferenceException입니다.: 개체 참조가 개체의 인스턴스로 설정 되지. Conchango.xyzzyManagementEventReceiver.UpdateEditionDate에서(SPItemEventProperties 속성) Conchango.xyzzyManagementEventReceiver.Dispatcher에서(SPItemEventProperties 속성, 문자열 eventDescription)].

준 특정 문제 아래로 추적 하는 데 필요한 모든 세부 사항 및 앞으로는 많은 그것을 사용 하 여 기대.

</끝>

내 블로그를 구독!

솔루션: SPQuery 폴더를 검색 하지 않습니다.

이것은 지난 주 구현 했다는 "진화" 클라이언트를 사용 하 여 BDC 고 SPQuery SPQuery를 사용 하 여 폴더를 포함 하는 문서 라이브러리에 대 한 몇 가지 어려움으로 실행에 대 한 솔루션. 히 프 라인: "재귀 지정" 쿼리 보기 특성.

내 시나리오:

  • 월요일에, 문서를 업로드 하 고 일부 메타 데이터 제공.
  • 다음 주, 새 문서를 업로드. 이 새로운 문서 메타 데이터의 대부분은 월요일에 업로드 하는 문서 기반 (우리는 전화 "마스터 문서").
  • 우리는 사용자가 제목 검색을 통해 월요일 문서를 쉽게 찾을 수 있도록 목록에는 BDC 친화적인 인터페이스를 제공 하는 웹 서비스 외관을 만들었습니다..
  • 친숙 한 사용자 인터페이스를 제공 하는 BDC 데이터 열. (이것은 더 친절 한 조회 열에 대 한 BDC를 사용 하 여 내 시도의 일환).

마지막 BDC 외관 서비스는이 같은 쿼리를 사용 하 여 조회를 할 수:

 // CAML 쿼리 생성을 지원 하기 위해 U2U 도구 사용.
      oQuery.Query =
        "<어디>";

      만약 (titleFilter.Length > 0)
        oQuery.Query   =
          "  <그리고>";

      oQuery.Query   =
        "    <그리고>" +
        "      <Geq>" +
        "        <FieldRef 이름 =  "DocumentId" />" +
        "        <값 유형 =  "Text">" + minId + "</값>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef 이름 =  "DocumentId" />" +
        "        <값 유형 =  "Text">" + maxId + "</값>" +
        "      </Leq>" +
        "    </그리고>";

      만약 (titleFilter.Length > 0)
        oQuery.Query   =
          "    <포함>" +
          "      <FieldRef 이름 =  "Title" />" +
          "      <값 유형 =  "Text">" + titleFilter + "</값>" +
          "    </포함>" +
          "  </그리고>";
      oQuery.Query   =
        "</어디>";

개발의 초기 단계, 이것을 잘. 그러나, 우리는 몇 가지 문제를 해결 하기 위해 디렉터리에 폴더를 도입 하 고 갑자기, 내 BDC 선택 어떤 결과 반환 하지 않을. 아래는 SPQuery 어떤 결과 반환 하지 것입니다 사실이을 추적. 폴더 여러 파일 업로드에 동일한 이름을 가진 하지만 다른 메타 데이터를 주로 사용 하는 우리. 파일 업로드 때, 우리 목록 항목 ID에 따라 폴더를 만들고 거기에 파일 이동 (그것에 대해 쓴 여기; 우리가 했 어 혼합된 결과 이 방법을 사용 하지만 전체에, 그것은 잘 작동 하 고 있다). 사용자 폴더에 대 한 고 사실 상관 없어, 모든 폴더는 정말 이해가. 우리 모든 뷰 폴더에 관계 없이 항목을 표시 하도록 라이브러리를 구성한.

진화 하 고 해결 기술 구현으로 두 번 그것은 다르게 때마다이 문제를 했다. 처음으로, 쿼리에서 CONTAINS 연산자를 사용 하지 않았어요. CONTAINS 연산자 없이, SPQuery의 비춰지는에 보기를 지정 하 여 문제를 해결할 수 있었다. 기본 생성자를 사용 하는 대신:

SPList oList = 웹.목록["문서"];

SPQuery oQuery = 새로운 내용 SPQuery();

대신 뷰를 지정 하는 생성자를 사용:

SPList oList = 웹.목록["문서"];

SPQuery oQuery = 새로운 내용 SPQuery(oList.Views["모든 문서"]);

그 문제를 해결 하 고 내 결과 얻으려면 시작.

그런 다음 믹스에 CONTAINS 연산자를 추가 하 고 다시 파산. 그것은 밝혀 그 CONTAINS 연산자, 지금까지 내가 말할 수 있습니다, 보기와 같은 방식으로 작동 하지 않습니다는 간단한 GEQ / LEQ 연산자. 내가 몇 가지 검색 않았고 배운 쿼리의 ViewAttributes "재귀"로 설정 되어야 합니다., 마찬가지로:

oQuery.ViewAttributes = "범위 = "Recursive"";

포함에 대 한 문제를 해결 하는. 사실, 이것 또한 내 원래의 검색 문제를 해결 하 고 나는 재귀 지정 했다 처음으로 특성, 내가 하지 실행 했을 문제점으로 다시.

뷰 기반 SPQuery 작품 일부 사업자에 대 한 사실 (GEQ/LEQ) 아닌 다른 사람 (포함), 사실 Kpi SPQuery 일부 직교 성 문제를가지고 있다고 생각 하기 나 폴더 포함 된 문서 라이브러리 리드와 전혀 작동 하지 않는 것과 함께.

특별 감사:

  • 좋은 사람 U2U 그리고 그들의 쿼리 도구.
  • 마이클 Hoffer의 위대한 "수행 하 여 학습" 블로그 게시물, 의견 및 응답.

</끝>

내 블로그를 구독!

MOSS KPI 버그? 문서 라이브러리 폴더에 묶여 목록 표시기

업데이트 02/29/08: 폴더를 만들고 메타 데이터는 Kpi에 대 한 필요를 있는 폴더에 콘텐츠 형식을 할당 하 여이 문제를 해결. 좀 더 자세히 여기에서 설명 하.

우리는 사용자가 문서 라이브러리에 문서를 업로드 하는 기술 솔루션을 실행 했다. 이벤트 수신기 디렉터리를 만들고 해당 디렉터리에 파일을 이동 (내가 쓴 비슷한 기법을 사용 하 여 여기). 우리는 성공적으로 업로드 된 파일의 이름을 변경 하는 이벤트 수신기에 의해 발생 하는 잠재적인 문제 주위 탐색 했습니다. (주로 하기 때문에 사용자는 "새로 만들기를 클릭 하 여 자신의 문서를 시작 하지" 하지만 대신 로컬로 문서를 만들고 업로드).

이 문서에 대 한 메타 데이터가 포함 예/사이트 열 "긴급" 그리고 다른 사이트 열 "상태" 라는. "긴급의 비율을 표시 하는 비즈니스 요구 사항을 충족 시켜야" 문서 상태는 "보류".

이것은 일반적으로 간단 SharePoint 비글에 이런식으로 아주 많이 뭔가 설명 하 고 당신이 관심이 있다면 스크린 샷 많이.

간단히 말해서, 했던:

  • "보류" 라는 문서 라이브러리 보기 만들기.
  • 폴더 구조를 무시 하 보기 구성.
  • KPI 목록 만들기.
  • "보류 중인 문서 lib를 가리키는 목록에서 표시기를 만들" 보기.

이 단순히 작동 하지 않습니다.. KPI 표시 내 목표 (예를 들어. 5 긴급 한 문서) 항상 0으로 긴급 한 문서의 실제 수를 표시 하지만. 역설적으로, 세부 정보로 드릴 경우, 5 긴급 문서 목록에 표시. 두 문서는 매우 간단한 시나리오를 만든, 폴더에 하나 하나 하지. 여기에 스크린 샷을입니다.:

이미지

위의 스크린 샷을 보기 하지만 "값에 두 개의 문서가 있다 명확 하 게 보여줍니다." 하나는. "CamlSchema" 빈 문서 Id가 루트 폴더에이 고 다른 "84" 라는 폴더에.

그것은 나에 게 나타납니다 그 보기를 지정 하더라도, KPI는 "모든 항목 표시 폴더 없이 명예 하지 않습니다." 설정 하 고 대신, 루트 폴더에 자신을 제한합니다.

만약 내가 틀 렸 다, 제발 절 라인 드롭 또는 덧 글을 남길.

</끝>

내 블로그를 구독!

테크노 태그:

문제를 해결: “FileNotFoundException” 내 기능 수신기와 함께.

필자는 지난 주 특정 목록 인스턴스에 몇 가지 이벤트 수신기를 추가 하는 것 이라고 하는 기능. (내가 여기에 그 목록 수신기에 대해 좀 블로그).

명령줄을 사용 하 여, 오류와 함께 기능을 설치할 수 있는 (하지만 아래 숨겨진된 오류를 참조 하십시오). 나는 사이트에 기능을 배포 하 려 할 때, 이끼 "FileNotFoundException의 불평" 오류. 이 블로그 항목에 설명 합니다 나는 그것을 해결 하는 방법.

이 모스 줬 어 웹 브라우저에 오류:

기능 ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ 때문에 설치할 수 없습니다 이벤트 수신기 어셈블리 "xyzzyFeatureReceiver_0 로드" 실패: System.IO.FileNotFoundException: 파일 또는 어셈블리를 로드할 수 없습니다 ' xyzzyFeatureReceiver_0’ 또는 해당 종속성 중 하나. 시스템 지정한 파일을 찾을 수 없습니다..
파일 이름: ' xyzzyFeatureReceiver_0’
System.Reflection.Assembly.nLoad에서(AssemblyName 파일 이름, 문자열 코드 베이스, 증거 assemblySecurity, 어셈블리 locationHint, StackCrawlMark& stackMark, 부울 throwOnFileNotFound, 부울 forIntrospection)
System.Reflection.Assembly.InternalLoad에서(AssemblyName assemblyRef, 증거 assemblySecurity, StackCrawlMark& stackMark, 부울 forIntrospection)
System.Reflection.Assembly.InternalLoad에서(AssemblyString 문자열, 증거 assemblySecurity, StackCrawlMark& stackMark, 부울 forIntrospection)
System.Reflection.Assembly.Load에(AssemblyString 문자열)
Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject에서()
WRN: 어셈블리 바인딩 로깅 설정 OFF.
어셈블리 바인딩 오류 로깅을 사용 하려면, 레지스트리 값 설정 [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) 받는 사람 1.
참고: 어셈블리 바인딩 오류 로깅와 관련 된 몇 가지 성능 저하.
이 기능을 해제 하려면, 레지스트리 값을 제거 [HKLMSoftwareMicrosoftFusion!EnableLog].

Windows SharePoint Services 문제 해결.

의도적으로 그 오류가 발생 하는 방법을 알으십시오: GAC에 어셈블리를 설치 하지 마십시오. 하지만, GAC에. 나 일반적으로 c로 드래그 하 여 GAC에 어셈블리 설치:\windows 탐색기를 사용 하 여 windowsassembly 폴더. 결코 느꼈습니다. 100% 때문에 항상 그 gacutil 존재 이유로 생각 하 고 편안 하 게 … 그래서 나는. 그것은 차이가 없습니다..

인터넷을 검색 하 고이 게시물을 발견: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

포스터 코드의 동일한 루트 비트를 사용 하는 일이 (이 목록에서 내부 WSS 책에서) 그래서 그건 희망 기호. 그러나, 사용 하 여 어셈블리를 꾸미기의 제안 된 [어셈블리: ] 지시어는 나에 게 이해를 하지 않았다. 어쨌든 그것을 시도 하 고 내가 옳 았 어. 그것은 차이가 없습니다..

그럼 난 내 클래스 정의 공개 되지 않았음을 발견. 난 그것을 공개 하 고 그 차이 만든.

다음, "어셈블리 바인딩 오류 로그를 사용 하는 문제에 갔다" (유용 하 고 정확한 지침에 따라 제공) 그리고이 것 흥미로운 얻을 시작. 해당 로그에 보여줍니다 런타임에서 어셈블리에 대 한 해당 서버에 어디에 나 찾기는. 그것은 심지어 내 의학 캐비닛에 그것을 위해 검색 될 것 같습니다.. 하지만 … GAC에 대 한 검색 하지 않습니다..

난 내 겨울 자 켓에 넣어 하 고 다시 인터넷 검색가 누군가가 있다고이 문제 너무 찾을. 그 게시에 긴 토론 아무것도 떨어져 피터 스와 나는 해결책을 찾을 수 없습니다..

로그 검색은 하 고 좀 더 진전을 주장 하는 장소 중 하나로 어셈블리를 이동. 기능을 활성화 하려고 할 때 브라우저에서 새로운 오류 보상 오전:

개체를 만드는 기능 수신기 어셈블리 "xyzzyFeatureReceiver_0"에서 실패, "Conchango.xyzzyFeatureReceiver 입력" 기능 b2cb42e3-4f0a-4380-aaba-1ef9cd526f20에 대 한: System.ArgumentNullException: 값이 null 일 수 없습니다..
매개 변수 이름: 유형
System.Activator.CreateInstance에서(유형 유형, 부울 미공개)
System.Activator.CreateInstance에서(유형 유형)
Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject에서()

Windows SharePoint Services 문제 해결.

인터넷에 1 개의 마지막 여행 위한 시간이!

이번이에 나는 알아, 예상 대로 충분히, 그 모스는 어셈블리는 GAC에 되지 않습니다 때문에이 오류 문제.

뭔가 긍정적이 고 조금 내가 만든 자랑 스럽게 생각 하 고는 MSIL 어셈블리의도 망자, 하지만 그것은 작동 하지 않습니다.. 난 그냥 평범한 화가. 나 자신도 "닭 또는 계란 말입니다." 내 숨 결 ' 아래의.

나는 마지막으로 펀트 결정. 난 완전히 새로운 프로젝트를 만들고이 새로운 프로젝트를 통해 incredible-cloaked-from-the-GAC-assembly 비 작업 프로젝트에서 코드를 복사/붙여넣기. ("어셈블리는 GAC에 설치 하는 경우 바인딩에서 숨기기 같은 것 이라고 빌드 플래그에 대 한 보고" 하지만 하나를 찾을 수 없습니다).

기능을 설치 하 고 그것을 활성화 하 고 … 그것은 작동! 그래서, 그 후, 기본적으로 했다 '를 재 부 팅’ 내 프로젝트. 이것은 왜 컴퓨터를 미 워 하는 또 다른 이유.

나이에서 유용한 뭔가 배 웠 어 요. 하루 종일 stsadm 명령줄을 사용 하 여 기능을 설치 했다 사용 하 고 있는 "-강제" 버 릇 옵션. 몇 가지 이유, 사용 하지 않은 새로운 프로젝트를 설치 했을 때-force 옵션. 이번에, 실제로 그 랬, 진정으로이 새로운 프로젝트의이 어셈블리는 GAC로 복사 하는 것을 잊지합니다. 결과적으로, "FielNotFoundException를 받은" 오류. 이번에, Stsadm에서 그것을, 아니 웹 브라우저를 통해 기능을 활성화 하 려 할 때. 그래서, -실제로 두 역할을 재생 하는 힘. 기존 기능을 다시 설치 해야 할 수 있습니다.. 그것은 또한 설치 버그 기능 오류를 억제 하 여 런타임에 작동 하지 않을 수 있습니다.. 그것은 아마 어딘가에 도움말에서 많은 하지만 난 결코 그것을 발견.

</끝>

테크노 태그: ,

빠른 & 쉬운: 이벤트 수신기를 통해 SharePoint 개체 모델을 사용 하 여 업로드 된 파일 이름 바꾸기

업데이트: 이 작동 하지만 의견에서 설명 하는 중요 한 제한이 있다. 아직도 일부 보이며에 유용할 수 있습니다..

업데이트 2: 현재 프로젝트 내에서, 사용자는 항상 문서 업로드. 결과적으로, MS 워드에 실행 하 고 파일에 그것은 개명 되었다 생각 문제에 실행 하지 않는. 나는 문제로 실행 했, "파일이 다른 사용자에 의해 수정 된" 이 간단한 세마포 형식 플래그를 통해 해결. 사용자가 메타 데이터 필드 기본값에서 뭔가 다른 변경 해야. itemupdated() 수신기 모양과 거기 유효한 값에 대 한 이름 바꾸기를 실제로 수행 하기 전에 그 이후, 난 아무 문제 없. 귀하의 마일리지가 다를 수 있습니다..

나는 특정 명명 규칙을 준수 하는 특정 문서 라이브러리에 업로드 한 파일의 이름을 변경 하려면 클라이언트 요구 사항. API 이름 바꾸기 "를 제공 하지 않습니다.()" 메서드. 대신, 우리를 사용 하 여 "MoveTo(…)". 여기는이 코드의 최소한의 비트:

 공용 재정의 void ItemAdded(SPItemEventProperties 속성)
        {
            SPFile f = 속성.ListItem.File;

            f.MoveTo(속성입니다.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

만 까다로운 비트는 "속성. ListItem.ParentList.RootFolder.Url ". MoveTo() 메서드는 URL 필요. 그 으깬 문자열 포인트를 내게 내 현재 문서 라이브러리의 루트 폴더에. 이 이벤트 수신기 내에 하드 코딩 하지 않아도 날 수 있습니다..

이것은 똑같은 않습니다 더 유용한 버전, 하지만 파일의 이름을 "제목"에 할당 합니다:

 공용 재정의 void ItemAdded(SPItemEventProperties 속성)
        {
            DisableEventFiring();

            // 파일 자체의 이름은이 항목의 제목을 할당합니다.
 // 참고: 이 할당 파일 자체를 수정 하기 전에 자리를 차지할 해야 합니다..
 // 업데이트 호출() SPFile에서 속성 무효화 것
 // 어떤 의미.  "제목에 대 한 업데이트" 실패 하는 변경할 때까지 (그리고 업데이트() 전화)
 // 파일 이름 변경 앞 이동.
            속성입니다.ListItem["제목"] 속성 =.ListItem.File.Name;

            속성입니다.ListItem.Update();

            SPFile f = 속성.ListItem.File;

            // 파일의 확장명을.  우리 나중에 필요.
 문자열 spfileExt = 새로운 내용 FileInfo(f.Name).확장;

            // 파일의 이름을 목록 항목의 ID로와 파일 확장명을 사용 하 여 계속
 // 그것은 그대로 그 부분.
            f.MoveTo(속성입니다.ListItem.ParentList.RootFolder.Url +
                "/" + 속성입니다.ListItem["ID"] + spfileExt);

            // 이동 범.
            f.Update();

            EnableEventFiring();
        }

빠른 팁: 콘텐츠 쿼리 웹 파트, 조회 열의 값 및 XSL

"부동산 위치" 라는 콘텐츠 형식에 열 이름을가지고.

해당 열 형식 "조회"입니다..

나 수정 <CommonViewFields> 그리고 열을 표시 하려면 ItemStyle.xsl.

간단한 <xsl:값의 선택 =…> 다시 위치 데이터를 포함 하는 내부 값을 반환 합니다., 와 같은:

1;#마이애미

인간 친화적인 값을 가져오려면, 부분 문자열 후 xsl을 사용 하 여, 같이:

<xsl:valuxslf 선택 "부분 문자열 후 =(@Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></xsl:값의>

XSL 변환에서 조회 값을 사용 하 고 인간 친화적인 가치를 얻을 하는 데 필요한 때마다이 방법을 사용 하 여.

<끝 />

테크노 태그: , ,

신속 하 고 쉽게: 사이트 열의 내부 열 이름 확인

업데이트: 제레미 Thake 이것에 대해 블로그에 있다 고 좀 올려 콘솔 응용 프로그램에 대 한 코드 내부 이름을 보여줍니다..

작업에서 기한을 표시 하려면 콘텐츠 쿼리 웹 파트를 얻을려고 했다 스크린 레이블이 "기한" 때문에, 내가 생각 하는 열 이름을 사용 하 여 <CommonViewFields> "Due_x0020_Date"은.

잘못 된!

실제 열 이름이 경우에 "DueDate".

나는 그것을 어떻게 알았습니까? 나는 다시 헤더 읽기 CQWP 수정에 솔로몬의 블로그 항목 데이터의 추가 열을 표시 하려면. 그녀는 단계에서이 프로세스를 설명합니다. #13. 그것을 믿어합니다. 그것은 올바른. 적어도, 그것은 나를 위해 정확 했다. 훨씬 더 긴 이름으로 또 다른 열에 대 한 처음에 그것을 신뢰 하지 않았다.

"그것을 믿지 말" 내가 그것을 신뢰 하지 않았다 그리고 아마 낭비 때문에 근처를 벽 내 머리를 참견 하는 2 시간. 내가 "DueDate 해결 후" 이름, 다른 필드를 추가 하 고 싶 었 <CommonViewFields>. 솔로몬 기술을 사용 하 여, 나는 "XYZ_x0020_Project_x0020_Due_x00" 같은 열 이름을 얻고 있었다.

나 혼자 생각, 그것은 명확 하 게 잘린된 이름. 나는 서 미리 취소 잘린 성공 없이 그것. 나는 마지막으로 겉보기 잘린된 이름을 사용 하 고 그것은 효과가 있었다.

보너스 팁: CQWP 같이 일 하 던 때, 내부 악명을 추가 하는 경우 <CommonViewFields>, CQWP 쿼리 결과 반환 했다 내게 말할 것 이다. 하지만, 필드 이름에 데이터 형식을 추가 하는 경우, 그것은 결과 반환. 추가 데이터 형식을 실제로 마스크 문제 때문에 존재 하지 않는 필드를 참조 했다. 나는 그것을 추가할 수 있습니다., 하지만 그 값을 표시 하 려 할 때, 나는 항상 빈을 얻을 것 이다.

이 오류를 마스크 하지 않았다:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

이 오류를 마스크 않았다:

<CommonViewFields>Due_x0020_Date,날짜/시간;</CommonViewfields>

</끝>