3

コードビハインドを使用してサイトコアにアイテムを作成したい。

私はこのコードを見つけました、そしてそれは完全にうまく働きます。

public void CreateItem(String itmName)
{
    //Again we need to handle security
    //In this example we just disable it
    using (new SecurityDisabler())
    {
        //First get the parent item from the master database
        Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master");
        Item parentItem = masterDb.Items["/sitecore/content/SOHO/Settings/Metadata/Project"];


        //Now we need to get the template from which the item is created
        TemplateItem template = masterDb.GetTemplate("SOHO/Misc/Project");
        //Now we can add the new item as a child to the parent
        parentItem.Add(itmName, template);


        //We can now manipulate the fields and publish as in the previous example
    }
}

しかし、私もフィールドに記入したいと思います。お気に入り..

Item.Fields["test"].Value="testing";

そのために私はアイテムを編集する方法を見つけました

public void AlterItem()
{
  //Use a security disabler to allow changes
  using (new Sitecore.SecurityModel.SecurityDisabler())
  {
    //You want to alter the item in the master database, so get the item from there
    Database db = Sitecore.Configuration.Factory.GetDatabase("master");
    Item item = db.Items["/sitecore/content/home"];


    //Begin editing
    item.Editing.BeginEdit();
    try
    {
      //perform the editing
      item.Fields["Title"].Value = "This value will be stored";
    }
    finally
    {
      //Close the editing state
      item.Editing.EndEdit();
    }
  }
}

しかし、私はこれら2つのことをどのように組み合わせるのかわかりません。

2つの方法を考えます。

方法1

私が作成したIDのをつかみます。Item

私はつかむことNameNameできますが、重複している可能性があります。

方法2

作成する前にフィールドに入力してくださいItem

しかし、それでは..繰り返しますが、これら2つの方法を実行する方法がわかりません。

ヒントをいただければ幸いです。

前もって感謝します。

4

2 に答える 2

5

メソッドitem.Add()は作成されたアイテムを返すため、コードは次のようになります。

    Item newItem = parent.Add(itemName, template);
    newItem.Editing.BeginEdit();
    newItem.Fields["fieldName"].Value = "fieldValue";
    newItem.Editing.EndEdit();
于 2012-06-21T07:44:13.670 に答える
2

これは、sitecoreのテンプレートに基づいてプログラムでアイテムを作成するために使用できる完全なコードです。

using Sitecore.Data.Items;    
// The SecurityDisabler is required which will overrides the current security model, allowing the code
// to access the item without any security. 
using (new Sitecore.SecurityModel.SecurityDisabler())
{
  // Get the master database
  Sitecore.Data.Database master = Sitecore.Data.Database.GetDatabase("master");
  // Get the template for which you need to create item
  Items.TemplateItem template = master.GetItem("/sitecore/templates/Sample/Sample Item");
 
  // Get the place in the site tree where the new item must be inserted
  Item parentItem = master.GetItem("/sitecore/content/home");
 
  // Add the item to the site tree
  Item newItem = parentItem.Add("NameOfNewItem", template);
 
  // Set the new item in editing mode
  // Fields can only be updated when in editing mode
  // (It's like the begin transaction on a database)
  newItem.Editing.BeginEdit();
  try
  {
    // Assign values to the fields of the new item
    newItem.Fields["Title"].Value = "NewValue1";
    newItem.Fields["Text"].Value = "NewValue2";
 
    // End editing will write the new values back to the Sitecore
    // database (It's like commit transaction of a database)
    newItem.Editing.EndEdit();
  }
  catch (System.Exception ex)
  {
    // Log the message on any failure to sitecore log
    Sitecore.Diagnostics.Log.Error("Could not update item " + newItem.Paths.FullPath + ": " + ex.Message, this);
 
    // Cancel the edit (not really needed, as Sitecore automatically aborts
    // the transaction on exceptions, but it wont hurt your code)
    newItem.Editing.CancelEdit();
  }
}
于 2016-02-07T07:21:47.177 に答える