2011-05-10 61 views
1

我的问题是基本相同@Bob黑色的Cannot access sitecore item field via API但我@ techphoria414是接受的解决方案是没有必要的,在我的情况不工作达成一致。不能编程访问一个新的领域上的模板在Sitecore的

在我自己的话,我有一个模板Departure,我已经使用了一年左右,现在编程方式创建和更新项目。我在模板中添加了一个新字段Ship。当我创建一个新项目时,当我尝试使用departure.Fields["Ship"]访问它时,该字段为空。如果我跨过导致异常的线路,然后在拨打departure.Editing.EndEdit()后,我可以看到Ship字段,如果我拨打departure.Fields.ToList()。如果我通过Sitecore GUI将模板添加到内容项目中,我可以看到该字段并使用它,如果我查看基于模板的内容项,我也可以看到新的字段。所以只有当我以编程方式访问模板/项目时它是空的。

我有Sitecore的与当地的SQLSERVER我的本地机器上运行,并发布到我的本地机器。

这里是我的代码

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

对不起Chris,StackOverflow和其他谁看了我的问题。这是一个愚蠢的错字。它甚至有我的问题

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

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

departure是我工作的项目,departures是它属于... DOH集合。

那么,什么是协议吗?我现在是否删除了我的问题,因为它不会帮助任何人更好地编写代码?

James。

2

首先你看到在Sitecore的管理网络数据库中的字段。 如果你做的项目有字段,然后你应该检查项目上分配的模板,并仔细检查该字段实际上被称为“发货”,并检查案例为先前看到这是一个问题。

还要检查项目和领域的安全,以防万一有人改变任何东西。 接下来尝试从项目获取数据,但不使用字段名称,而使用字段ID。

让我知道你是怎么回事?

Chris

相关问题