Developer forum

Forum » Development » When saving product categories my code fails.

When saving product categories my code fails.

Martin Nielsen
Reply

Hi DW,

I've updated my developer solution to 19.2.3.5 and now i can't save product catogories.

I get this error:
IComparer (eller de IComparable-metoder, den afhænger af) returnerede ikke nul, da Array.Sort kaldte x. CompareTo(x). x: '' x's type: 'FieldOption' IComparer: 'Dynamicweb.eCommerce.Products.Categories.Field+FieldOptionSort'.

My code worked before the update, did something change?

See my code in next reply.

Regards
 Martin


Replies

 
Martin Nielsen
Reply
// Create product category if it doesn't exist
Dynamicweb.eCommerce.Products.Categories.Category productCategory = Dynamicweb.eCommerce.Products.Categories.Category.GetCategoryByID( App.CodeSettings.ProductCategoriesCategoryID_SimpleProduct );
if ( productCategory == null || productCategory.Name.Length == 0 )
{
  productCategory = Dynamicweb.eCommerce.Products.Categories.Category.Create( App.CodeSettings.ProductCategoriesCategoryID_SimpleProduct, "Products" );
  productCategory.Save();
}    

FieldOptionCollection options = new FieldOptionCollection();

foreach ( AnveldelseTXT item in list )
{
  if ( item.SprogKode.ToLower() == App.CodeSettings.DefaultLanguage )
  {
    FieldOption opt = new FieldOption();
    opt.Name = item.AnvendelseNavn;
    opt.Value = item.AnvendelseKode;
    opt.IsDefault = false;
    opt.Sort = i;
    options.Add( opt );
    i++;
  }
}

/* Find field in category */
bool foundFilter = false;
foreach ( Dynamicweb.eCommerce.Products.Categories.Field f in productCategory.Fields )
{
  if ( f.ID.Equals( "MyFieldID" ) )
  {
    f.FieldOptions.Clear();
    foreach ( FieldOption item in options )
    {
      f.FieldOptions.Add( item );
    }
    foundFilter = true;
    break;
  }
}

// If we didn't find field, create it
if ( !foundFilter )
{
  // Create Field for colors
  FieldType type = new FieldType( 15 );
  productCategory.AddField( App.CodeSettings.ProductCategoriesFieldID_Use, "Anvendelse", App.CodeSettings.ProductCategoriesFieldID_Use, type.ID.ToString(), string.Empty, FieldListPresentationType.CheckBoxList, options );
}

productCategory.Save();

 

 
Martin Nielsen
Reply
The error occurs at line 49.
 
Jeppe Eriksson Agger Dynamicweb Employee
Jeppe Eriksson Agger
Reply
This post has been marked as an answer

Hi Martin,

It seems that a bug was introduced with the addition of Product Category language versioning. It will be fixed in the next hotfix.

As a temporary workaround you can do this before you save:
option.ID = string.Format("{0}{1}Option{2}", categoryID, fieldID, sortIndex);


Hope this helps :)

- Jeppe
Votes for this answer: 0
 
Martin Nielsen
Reply

Hi Jeppe,

Thx, that did the trick.
Looking forward to the hotfix.

Regards
 Martin

 
Martin Nielsen
Reply
Hi Jeppe,

I've run into a problem after using your suggestion.
In the Management center, when i go to to Search filter, and click on one of my filtes i get this error:

Message: Elementet er allerede blevet tilføjet. Nøgle i ordbog: 'CF_[ProductCategory1][PFC_USE]' Nøgle, der bliver tilføjet: 'CF_[ProductCategory1][PFC_USE]'
StackTrace: ved System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) ved Dynamicweb.Searching.Specialized.eCommerce.ProductFieldsFilterProvider.GetOptions(String name) ved Dynamicweb.Extensibility.Editors.GroupedDropDownParameterEditor.Render(ConfigurableAddIn AddIn, String Name, Object Value, Hashtable options, String Label) ved Dynamicweb.Extensibility.Editors.GroupedDropDownParameterEditor.Render(ConfigurableAddIn AddIn, String Name, Object Value, Hashtable options) ved Dynamicweb.Extensibility.AddInConfigurator.Render(HtmlTextWriter output) ved Dynamicweb.Admin.EcomConfigurableAddin_GetParameters.Page_Load(Object sender, EventArgs e)
Source: mscorlib
 
I'm not sure if its the option Id's or the the release, but something is wrong :-(

Got any ideas how to fix this one?

- Martin


 
 
Martin Nielsen
Reply
Created a seperate post for my last question.

See http://developer.dynamicweb-cms.com/forum.aspx?ThreadID=26530

 

You must be logged in to post in the forum