Custom front end product sorting

Posted by Community Admin on 05-Aug-2018 23:55

Custom front end product sorting

All Replies

Posted by Community Admin on 06-Oct-2012 00:00

I am working on a way to sort the list of products by inheriting from Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.ProductsView

Here is my codes so far:

Public Class ProductList
    Inherits Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.ProductsView
 
 
    Private m_sortOrderOverride As String = String.Empty
    Public Property SortOrderOverride() As String
        Get
            Return m_sortOrderOverride
        End Get
        Set(ByVal value As String)
            m_sortOrderOverride = value
        End Set
    End Property
 
 
    Protected Overrides Sub LoadView(viewName As String)
        MyBase.LoadView(viewName)
 
        If Not String.IsNullOrEmpty(m_sortOderOverride) Then
            Dim listView As Telerik.Sitefinity.Web.UI.ContentUI.ContentViewMasterDefinition = MyBase.ControlDefinition.Views.Item(0)
            listView.SortExpression = m_sortOrderOverride
        End If
 
    End Sub
 
 
End Class

The issues I am having is that setting the SortOrderOverride to any sort string utilizing custom fields defined in the product type causes the following exception.
[NullReferenceException: Object reference not set to an instance of an object.]
   Telerik.Sitefinity.Data.Linq.Dynamic.ExpressionParser.ParseComparison() +64
   Telerik.Sitefinity.Data.Linq.Dynamic.ExpressionParser.ParseLogicalAnd() +54
   Telerik.Sitefinity.Data.Linq.Dynamic.ExpressionParser.ParseLogicalOr() +54
   Telerik.Sitefinity.Data.Linq.Dynamic.ExpressionParser.ParseExpression() +27
   Telerik.Sitefinity.Data.Linq.Dynamic.ExpressionParser.ParseOrdering() +43
   Telerik.Sitefinity.Data.Linq.Dynamic.DynamicQueryable.OrderBy(IQueryable source, String ordering, Object[] values) +203
   Telerik.Sitefinity.Data.Linq.Dynamic.DynamicQueryable.OrderBy(IQueryable`1 source, String ordering, Object[] values) +29
   Telerik.Sitefinity.Data.DataProviderBase.SetExpressions(IQueryable`1 query, String filterExpression, String orderExpression, Nullable`1 skip, Nullable`1 take, Nullable`1& totalCount) +304
   Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Views.ProductsMasterView.GetDataSource() +908
   Telerik.Sitefinity.Modules.Ecommerce.Catalog.Web.UI.Views.ProductsMasterView.ProductsListView_NeedDataSource(Object sender, RadListViewNeedDataSourceEventArgs e) +47
   Telerik.Web.UI.RadListView.OnNeedDataSource(RadListViewNeedDataSourceEventArgs e) +197
   Telerik.Web.UI.RadListView.AutoDataBind(RadListViewRebindReason rebindReason) +183
   Telerik.Web.UI.RadListView.OnPreRender(EventArgs e) +38
   System.Web.UI.Control.PreRenderRecursiveInternal() +112
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Control.PreRenderRecursiveInternal() +221
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4200


I suspect that the base query does not contain the custom fields.

Does anyone have a workaround?

Thanks,
-jm

This thread is closed