Как да сортирате числено, вместо по низ, на Telerik RadGrid ASP.NET Ajax?

Имам RadGrid, който има колона Сума на загуба, която бих искал да мога да сортирам. В момента сортира, но само по стойност на низ. Имам типа колона като GridNumericColumn. Как мога да го направя?

Моят код е посочен по-долу. Също така форматирам текста на колоната, за да показва валутата. Едно нещо, което забелязах е, че връщам стойност на низ от метода Format. Възможно ли е това да е причината?

Колона:

<rad:GridNumericColumn DataField="Loss Amount"
                       UniqueName="Loss Amount"
                       HeaderText="Loss Amount"
                       SortExpression="Loss Amount" \>
    <HeaderStyle Width="140">
    <ItemStyle Width="140" HorizontalAlign="Right"ForeColor="Maroon" />
</rad:GridNumericColumn>`

Събитие NeedDataSource:

protected void grdCustomerAssignments_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
    GetAssignments();
    grdCustomerAssignments.DataSource = Assignments;
}

private void GetAssignments()
{
    if (Assignments == null)
        Assignments = new DataTable();

    SPList list = SPContext.Current.Web.Lists["Listings"];
    SPView view = GetCustomerView();
    SPListItemCollection items = list.GetItems(view);

    Assignments = items.GetDataTable();

    foreach (DataColumn column in Assignments.Columns)
    {
        column.ColumnName = XmlConvert.DecodeName(column.ColumnName);
    }

    Assignments.AcceptChanges();
}

Събитие ItemDataBound:

protected void grdCustomerAssignments_ItemDataBound(object sender, GridItemEventArgs e)
{
    FormatCurrency(item["Loss Amount"].Text);
}

protected string FormatCurrency(string text)
{
    if (text.Length > 3)
    {
        string result = String.Empty;
        char[] tmpArray = text.ToCharArray();
        Array.Reverse(tmpArray);
        string tmpString = new String(tmpArray);

        while (tmpString.Length > 3)
        {
            string threeChars = tmpString.Substring(0, 3);
            result = String.Concat(result, threeChars, ",");
            tmpString = tmpString.Remove(0, 3);
        }

        result = String.Concat(result, tmpString);
        tmpArray = result.ToCharArray();
        Array.Reverse(tmpArray);
        text = new String(tmpArray);
    }
    return String.Concat("$ ", text);
}

person jhorton    schedule 01.02.2010    source източник
comment
Можете ли да публикувате своя обвързващ код и вашето GridNumericColumn маркиране?   -  person Bob    schedule 01.02.2010


Отговори (1)


Също така проверете дали полето източник е от числов тип данни и не е низ. Можете да тествате това лесно, като активирате редактиране - ако редактирате елемент, ще бъде хвърлено изключение, ако се опита да бъде присвоена стойност на низ към цифровия редактор на Telerik.

person Dick Lampard    schedule 01.02.2010
comment
Опитах редакцията, не беше хвърлено изключение. Въпреки че все още има запетая в стойността. Това няма ли да го направи низова стойност? - person jhorton; 01.02.2010
comment
Потвърдихте ли, че полето източник е числов тип? Ако проверите таблицата с данни за присвояванията, показва ли сумата на загубата като числово поле? - person Phil; 28.03.2015