Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater и отображение в нём файлов из папки / 10 сообщений из 10, страница 1 из 1
08.04.2015, 11:11
    #38930151
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
Подскажите пожалуйста, если кто знает, вот у меня в проекте, есть контрол повторитель, в него читаю имена файлов из папок. Так вот проблема, сортировка.
Пользователь в парку добавляет файлы:
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
08.04.2015, 11:16
    #38930161
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
da harochЕсли сортировать в папке, нормально, а на странице отображается.
1. проба
10. проба
2. пробаНормальный лексикографический порядок. При чём тут "повторитель"? :)
...
Рейтинг: 0 / 0
08.04.2015, 11:19
    #38930166
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
skyANAda harochЕсли сортировать в папке, нормально, а на странице отображается.
1. проба
10. проба
2. пробаНормальный лексикографический порядок. При чём тут "повторитель"? :)


как это причём, при том, это ведь он отвечает за отображение файлов, а в папке то нормальный порядок.
А в выводе на страницу то
1.
10.
2.
значит выходит нужна какая та сортировка, правильно же я понимаю? Или если, как вы говорите причём тут повторитель, как я тогда сделаю чтоб было
1.
2.
3.
...
10
вот?
...
Рейтинг: 0 / 0
08.04.2015, 11:25
    #38930176
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
08.04.2015, 11:31
    #38930183
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
08.04.2015, 12:59
    #38930365
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
13.04.2015, 09:26
    #38934461
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
13.04.2015, 09:43
    #38934475
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
13.04.2015, 09:52
    #38934487
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
13.04.2015, 10:03
    #38934504
da haroch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater и отображение в нём файлов из папки
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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater и отображение в нём файлов из папки / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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