В элементе управления ObjectListView (http://objectlistview.sourceforge.net/html/cookbook.htm) я пытаюсь добавить собственный сортировщик, где он игнорирует префиксы «The» и «A».ObjectListView: Пользовательский сортировщик
Мне удалось сделать это с помощью обычного ListView, но теперь, когда я переключился на ObjectListView (намного больше функций и легкость), я не могу сделать то же самое.
Ниже Главный Comparer в коде ObjectListView я думаю ...
public int Compare(object x, object y)
{
return this.Compare((OLVListItem)x, (OLVListItem)y);
}
Оригинал сортировщик для восходящих, в качестве примера (Игнорирование "А" и "В")
public class CustomSortAsc : IComparer
{
int IComparer.Compare(Object x, Object y)
{
string[] px = Convert.ToString(x).Split(' ');
string[] py = Convert.ToString(y).Split(' ');
string newX = "";
string newY = "";
for (int i = 0; i < px.Length; i++)
{
px[i] = px[i].Replace("{", "");
px[i] = px[i].Replace("}", "");
}
for (int i = 0; i < py.Length; i++)
{
py[i] = py[i].Replace("{", "");
py[i] = py[i].Replace("}", "");
}
if ((px[1].ToLower() == "a") || (px[1].ToLower() == "the"))
{
if (px.Length > 1)
{
for (int i = 2; i < px.Length; i++)
newX += px[i];
}
}
else
{
for (int i = 1; i < px.Length; i++)
newX += px[i];
}
if ((py[1].ToLower() == "a") || (py[1].ToLower() == "the"))
{
if (py.Length > 1)
{
for (int i = 2; i < py.Length; i++)
newY += py[i];
}
}
else
{
for (int i = 1; i < py.Length; i++)
newY += py[i];
}
return ((new CaseInsensitiveComparer()).Compare(newX, newY));
}
Можете ли вы добавить дополнительную информацию, например, какой результат вы получаете, как вы подключаете CustomSortAsc со списком и т. Д.? – Ludovic