2011-05-10 7 views
1

내 질문은 기본적으로 @Bob Black의 Cannot access sitecore item field via API과 동일하지만 허용 된 솔루션이 필요하지 않으며 제 경우에는 작동하지 않는다는 것에 동의합니다.Sitecore 템플릿에서 프로그래밍 방식으로 새 필드에 액세스 할 수 없음

내 자신의 말로는 약 1 년 동안 프로그래밍 방식으로 항목을 만들고 업데이트하는 데 사용한 Departure 템플릿이 있습니다. 템플릿에 새 필드 Ship을 추가했습니다. 새 항목을 만들 때 departure.Fields["Ship"]을 사용하여 필드에 액세스하려고하면 필드가 null로 표시됩니다. 내가 전화를 departure.Editing.EndEdit() 호출 한 후 예외를 일으키는 줄을 단계를 경우 호출하면 Ship 필드를 볼 수 있습니다. Sitecore GUI를 통해 컨텐트 아이템에 템플릿을 추가하면 필드를보고 사용할 수 있으며 템플릿을 기반으로하는 컨텐트 항목을 보면 새로운 필드도 볼 수 있습니다. 그래서 그것이 템플릿/항목에 프로그래밍 방식으로 액세스 할 때만 null입니다.

로컬 sqlserver로 로컬 컴퓨터에서 sitecore를 실행하고 로컬 컴퓨터에 게시합니다. 여기

그래서 내 코드

String ship = "MSDisaster"; 

foreach (Language language in SiteLanguages) 
{ 
    departure = departure.Database.GetItem(departure.ID, language); 
    departure.Editing.BeginEdit(); 

    try 
    { 
     departure.Fields["StartDate"].Value = GetSitecoreDateString(xDep, "StartDate"); 
     departure.Fields["EndDate"].Value = GetSitecoreDateString(xDep, "EndDate"); 
     departure.Fields["Guaranteed"].Value = xDep.SelectSingleNode("./Guaranteed").InnerText; 
     departure.Fields["Status"].Value = xDep.SelectSingleNode("./Status").InnerText; 
     departure.Fields["Currency"].Value = ConvertLanguageToCurrency(language); 
     departure.Fields["Market"].Value = ConvertLanguageToMarket(language); 
     departure.Fields["TwinSharePrice"].Value = GetPrice(xDep, "twn", language); 
     departure.Fields["SinglePrice"].Value = GetPrice(xDep, "sgl", language); 

     if (!String.IsNullOrEmpty(ship)) 
      departures.Fields["Ship"].Value = ship; 
    } 
    catch (Exception ex) 
    { 
     departure.Editing.CancelEdit(); 
     log.Error(ex); 
     throw ex; 
    } 
    departure.Editing.EndEdit(); 
} 

이다, 어떻게 필드가 뽑힐받을 수 있나요?

고마워요,

제임스.

답변

0

죄송 크리스, StackOverflow에, 내 질문에보고 다른 사람. 그것은 어리 석 길한 오타였습니다. 그것은 내 질문에

departure.Fields["SinglePrice"].Value = GetPrice(xDep, "sgl", language); 

    if (!String.IsNullOrEmpty(ship)) 
     departures.Fields["Ship"].Value = ship; 
} 

departure 내가 작업하고있는 항목이며, departures에서도 거기가 ... DOH 속한 컬렉션되어 있습니다.

여기 프로토콜은 무엇입니까? 다른 사람이 더 잘 코드를 작성하는 데 도움이되지 않으므로 지금 내 질문을 삭제합니까?

제임스.

2

먼저 사이트 캐시 관리에서 웹 데이터베이스의 필드를 확인하십시오. 항목에 필드가있는 경우 항목에 지정된 템플릿을 확인하고 필드가 실제로 "배송지"로되어 있는지 확인한 다음 이전에이 문제로 보았던 사례로 확인하십시오.

사람이 아무 것도 변경된 경우를 대비하여 항목 및 필드의 보안을 확인하십시오. 다음으로 항목에서 데이터를 가져오고 필드 이름을 사용하는 대신 필드 ID를 사용하십시오.

내가 어떻게하는지 알려주시겠습니까?

크리스

관련 문제