Sorting problem

Posts   
 
    
nevernet
User
Posts: 67
Joined: 01-Feb-2010
# Posted on: 02-Dec-2011 09:50:30   

Hi,

aspx page


<asp:TemplateField HeaderText="Assigned" SortExpression="AssignedToDealer">
                    <ItemTemplate>
                    
                    </ItemTemplate>
                </asp:TemplateField>

we are using "LLBLGenProDataSource" to bind data to gridview


<llblgenpro:LLBLGenProDataSource ID="DS" runat="server" DataContainerType="TypedList"
    EnablePaging="True" TypedListTypeName="DAL.TypedListClasses.XXLeadTypedList, DAL">
</llblgenpro:LLBLGenProDataSource>

in the .cs file:


protected void gvList_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sort = e.SortDirection.ToString();
        string sortexpression = e.SortExpression;

        ViewState["sort"] = sort;
        ViewState["sortexpression"] = sortexpression;

        BindData();

        upList.Update();
    }

BindData function:


void BindData()
    {
        DS.FilterToUse = GetFilter();
        DS.SorterToUse = GetSorter();

        DS.Refetch = true;

        DS.DataBind();

    
    }


GetSorter():


ISortExpression GetSorter()
    {
        ISortExpression sorter = new SortExpression();
        

        if (ViewState["sort"] == null)
        {
            sorter.Add(XXLeadFields.CreatedDatetime | SortOperator.Ascending);
        }
        else
        {
            string sort = ViewState["sort"].ToString();
            string sortexpression = ViewState["sortexpression"].ToString();

            SortOperator so = SortOperator.Ascending;
            if (sort == "Descending")
            {
                so = SortOperator.Descending;
            }

            EntityField ef = XXLeadFields.CreatedDatetime;
            if (sortexpression == "FirstName")
            {
//...
            }
            
            else if (sortexpression == "AssignedToDealer")
            {
                ef = DealerFields.DealerName;
            }
            
            sorter.Add(ef | so);
        }

        return sorter;
    }

the generated SQL:


 ORDER BY Lead.AssignedToDealer ASC

the order should be : order by Lead.DealerName, but it still order by AssignedToDealer.

why?

thank you

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 02-Dec-2011 10:46:53   

You should cancel the Sort event by having

e.Cancel = true;

At the end of gvList_Sorting().

nevernet
User
Posts: 67
Joined: 01-Feb-2010
# Posted on: 02-Dec-2011 14:48:23   

Hi, Walaa,

Great, thank you very much