У меня есть 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);
}