Я выполняю операции CRUD для продуктов электронной коммерции сайт в Кентико 10.Я можно добавлять и обновлять продукты, используя ниже APIСкрыть продукт в Kentico 10
SKUInfoProvider.SetSKUInfo(updateProduct);
Также имеется API для удаления продукта
SKUInfoProvider.DeleteSKUInfo(updateProduct);
Но я не хочу удалять продукт из базы данных, а просто отключить их, чтобы они не отображались конечным пользователям и все еще остаются в базе данных.
Я попытался установить SKUEnabled как ложные, но все же пользователь может видеть product.So, я использовал ниже код, чтобы скрыть продукты
ProductNode.SetValue("DocumentPublishTo", DateTime.Now.AddDays(-1));
Но мой код установки добавляет новый продукт с более инвалидов property.Here мой код
foreach (DataRow dr in dt.Rows)
{
manufacturer = GetManufacturer(Convert.ToString(dr["MANUFACTURER_NAME"]));
department = GetDepartment(Convert.ToString(dr["CATEGORY_OF_PRODUCT_1"]));
var sku = new SKUInfo
{
SKUNumber = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]),
SKUName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]),
SKUDescription = Convert.ToString(dr["TECHNICAL_SPECIFICATIONS"]).Trim('"'),
SKUShortDescription = Convert.ToString(dr["SHORT_DESCRIPTION"]).Trim('"'),
SKUPrice = ValidationHelper.GetDouble(dr["RESELLER_BUY_INC"], 0),
SKURetailPrice = ValidationHelper.GetDouble(dr["RRP_INC"], 0),
SKUEnabled = false,
SKUSiteID = siteId,
SKUProductType = SKUProductTypeEnum.Product,
SKUManufacturerID = manufacturer.ManufacturerID,
SKUDepartmentID = department.DepartmentID,
SKUHeight = ValidationHelper.GetDouble(dr["HEIGHT"], 0),
SKUWidth = ValidationHelper.GetDouble(dr["WIDTH"], 0),
SKUWeight = ValidationHelper.GetDouble(dr["WEIGHT"], 0),
SKUDepth = ValidationHelper.GetDouble(dr["LENGTH"], 0),
SKUAvailableItems = 1,
SKUSellOnlyAvailable = true
};
try
{
SKUInfo updateProduct = SKUInfoProvider.GetSKUs()
.WhereEquals("SKUNumber", sku.SKUNumber)
.FirstObject;
sku.SKUPrice += sku.SKUPrice * 0.015;
if (updateProduct != null)
{
updateProduct.SKUNumber = sku.SKUNumber; updateProduct.SKUName = sku.SKUName;
SKUInfoProvider.SetSKUInfo(updateProduct);
}
else
{
SKUInfoProvider.SetSKUInfo(sku);
}
if (!sku.SKUEnabled)
{
SKUTreeNode productDoc = (SKUTreeNode)SKUTreeNode.New(productDocumentType.ClassName, tree);
if (sku.SKUEnabled == false)
{
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1);
}
productDoc.DocumentSKUName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]);
productDoc.DocumentSKUDescription = sku.SKUDescription;
productDoc.NodeSKUID = sku.SKUID;
productDoc.DocumentCulture = cultureCode;
productDoc.DocumentName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]);
}
}
catch (Exception ex)
{
error += "error";
}
}
Просьба представить возможное solution.There не является никакой собственности, такими как DocumentPublishTo в SKUInfo, поэтому я использовал его с SKUTreeNode, которые вы можете найти в настройках кода.
SKUTreeNode productDoc = (SKUTreeNode)SKUTreeNode.New(productDocumentType.ClassName, tree);
if (sku.SKUEnabled == false)
{
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1);
}
почему вы звоните (SKUTreeNode) SKUTreeNode.New(), когда вы не хотите, новый продукт? Вместо этого я бы установил его для объекта updateProduct. – JanH
В SKUInfo нет такого свойства, как DocumentPublishTo, поэтому он использовался с SKUTreeNode. –
Возможный дубликат [Как отключить продукты в Kentico 10?] (Http://stackoverflow.com/questions/42114600/how-do-i-disable-products-in-kentico-10) –