powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater и отображение в нём файлов из папки
10 сообщений из 10, страница 1 из 1
Repeater и отображение в нём файлов из папки
    #38930151
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, если кто знает, вот у меня в проекте, есть контрол повторитель, в него читаю имена файлов из папок. Так вот проблема, сортировка.
Пользователь в парку добавляет файлы:
1. проба
2. проба
3. проба
4. проба
5. проба
6. проба
7. проба
8. проба
9. проба
10. проба
Если сортировать в папке, нормально, а на странице отображается.
1. проба
10. проба
2. проба
3. проба
4. проба
5. проба
6. проба
7. проба
8. проба
9. проба
Почитала про repeater, что не очень понимаю как мне сделать сортировку, чтоб она была как в папке виндовс к примеру=)))

Код вывода на страницу:
Код: c#
1.
2.
3.
4.
5.
6.
 <asp:Label ID="Label2" runat="server" Text="Приказ№1:" CssClass="Verdana bold"></asp:Label>
                    <p><asp:Repeater ID="Repeater2" runat="server">
            <ItemTemplate>             
                <asp:HyperLink ID="url2" runat="server" Text='<%# Eval("Name") %>' NavigateUrl='<%# "~/Приказ№1/" + Eval("Name")%>' />
            </ItemTemplate>            
        </asp:Repeater></p>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
       //Отображаем содержимое раздела "Основополагающие документы СМК"        
        string uploads_dir;
        //путь
        uploads_dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Основополагающие документы СМК");       
        DirectoryInfo uploads = new DirectoryInfo(uploads_dir);        
        if (!uploads.Exists)
        //Создаём директорию
            uploads.Create();
        //Читаем значение директории в Repeater
        Repeater1.DataSource = uploads.GetFiles();
        //Обновляем его значение
        Repeater1.DataBind();



Вот сортировку бы ещё придумать.=)
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38930161
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da harochЕсли сортировать в папке, нормально, а на странице отображается.
1. проба
10. проба
2. пробаНормальный лексикографический порядок. При чём тут "повторитель"? :)
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38930166
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAda harochЕсли сортировать в папке, нормально, а на странице отображается.
1. проба
10. проба
2. пробаНормальный лексикографический порядок. При чём тут "повторитель"? :)


как это причём, при том, это ведь он отвечает за отображение файлов, а в папке то нормальный порядок.
А в выводе на страницу то
1.
10.
2.
значит выходит нужна какая та сортировка, правильно же я понимаю? Или если, как вы говорите причём тут повторитель, как я тогда сделаю чтоб было
1.
2.
3.
...
10
вот?
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38930176
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da harochskyANAпропущено...
Нормальный лексикографический порядок. При чём тут "повторитель"? :)


как это причём, при том, это ведь он отвечает за отображение файлов, а в папке то нормальный порядок.
А в выводе на страницу то
1.
10.
2.
значит выходит нужна какая та сортировка, правильно же я понимаю? Или если, как вы говорите причём тут повторитель, как я тогда сделаю чтоб было
1.
2.
3.
...
10
вот?Либо добавляйте нули в имена файлов:
01.
02.
...
10.

Либо пишите свою реализацию MyComparer : IComparer<string> и подставляйте:
Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new MyComparer());



Как пидите "посторитель" не при чём. Список файлов возвращается в лексикографическом порядке, а он его тупо повторяет :)
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38930183
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAda harochпропущено...



как это причём, при том, это ведь он отвечает за отображение файлов, а в папке то нормальный порядок.
А в выводе на страницу то
1.
10.
2.
значит выходит нужна какая та сортировка, правильно же я понимаю? Или если, как вы говорите причём тут повторитель, как я тогда сделаю чтоб было
1.
2.
3.
...
10
вот?Либо добавляйте нули в имена файлов:
01.
02.
...
10.

Либо пишите свою реализацию MyComparer : IComparer<string> и подставляйте:
Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new MyComparer());



Как пидите "посторитель" не при чём. Список файлов возвращается в лексикографическом порядке, а он его тупо повторяет :)

Ничосе=)))) спасибо за информацию, ну значит буду думать, как я решу эту проблему, я то пока заставила пользователей убрать цифорки, и на уровне маркеров делаем нумерацию=))
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38930365
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da haroch,

если хотите прям как в папке проводника 1 в 1, то:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ExplorerComparer : IComparer<string>
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern int StrCmpLogicalW(string x, string y);

    public int Compare(string x, string y)
    {
        return StrCmpLogicalW(x, y);
    }
}



Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new ExplorerComparer());
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38934461
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttda haroch,

если хотите прям как в папке проводника 1 в 1, то:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ExplorerComparer : IComparer<string>
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern int StrCmpLogicalW(string x, string y);

    public int Compare(string x, string y)
    {
        return StrCmpLogicalW(x, y);
    }
}



Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new ExplorerComparer());



я попробовала сделать как вы сказали.
ругается вот на эту строчку
Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new ExplorerComparer());


ошибка:
Код: sql
1.
System.IO.FileInfo[]" не содержит определение для "OrderBy". Не удалось найти метод расширения "OrderBy", принимающий первый аргумент типа "System.IO.FileInfo[]" (пропущено использование директивы или ссылка на сборку?)
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38934475
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
da harochhVosttda haroch,

если хотите прям как в папке проводника 1 в 1, то:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ExplorerComparer : IComparer<string>
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern int StrCmpLogicalW(string x, string y);

    public int Compare(string x, string y)
    {
        return StrCmpLogicalW(x, y);
    }
}



Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new ExplorerComparer());



я попробовала сделать как вы сказали.
ругается вот на эту строчку
Код: c#
1.
Repeater1.DataSource = uploads.GetFiles().OrderBy(f => f, new ExplorerComparer());


ошибка:
Код: sql
1.
System.IO.FileInfo[]" не содержит определение для "OrderBy". Не удалось найти метод расширения "OrderBy", принимающий первый аргумент типа "System.IO.FileInfo[]" (пропущено использование директивы или ссылка на сборку?)



Добавила ссылку на сборку
Код: sql
1.
using System.Linq; 


нашёл orderby
но теперь следующая ошибка

Код: c#
1.
CS0411: Невозможно получить аргумент типа для метода 'System.Linq.Enumerable.OrderBy<TSource,TKey>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TKey>, System.Collections.Generic.IComparer<TKey>)' из данных использования. Попробуйте указать аргументы типа явным образом.
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38934487
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da harochнашёл orderby
но теперь следующая ошибка

Попробуйте вот этот код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ExplorerComparer : IComparer<System.IO.FileInfo>
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern int StrCmpLogicalW(string x, string y);

    public int Compare(System.IO.FileInfo x, System.IO.FileInfo y)
    {
        return StrCmpLogicalW(x.Name, y.Name);
    }
}
...
Рейтинг: 0 / 0
Repeater и отображение в нём файлов из папки
    #38934504
da haroch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttda harochнашёл orderby
но теперь следующая ошибка

Попробуйте вот этот код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ExplorerComparer : IComparer<System.IO.FileInfo>
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    static extern int StrCmpLogicalW(string x, string y);

    public int Compare(System.IO.FileInfo x, System.IO.FileInfo y)
    {
        return StrCmpLogicalW(x.Name, y.Name);
    }
}



Заработало, спасибо огромное при огромное=)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater и отображение в нём файлов из папки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]