DevExpress DataGrid

#c# #devexpress

#c# #devexpress

Вопрос:

Я хочу заполнить DevExpress DataGrid выбранными атрибутами всех файлов, содержащихся в пути к файлу, это то, что у меня есть в настоящее время («Name.» является заполнителем)

 private void grList_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
    {

        DirectoryInfo source = new DirectoryInfo(path);

        switch (e.Column.FieldName)
        {
            case "Name":
                e.Value = source.GetFiles(Name.ToString());
            break;
            case "FullName":
                e.Value = source.GetFiles(Name.ToString());
                break;
            case "Extention":
                e.Value = source.GetFiles(Name.ToString());
                break;
            case "LastAccessTime":
                e.Value = source.GetFiles(Name.ToString());
                break;
            case "LastWriteTime":
                e.Value = source.GetFiles(Name.ToString());
                break;
        }
    }
  

Комментарии:

1. Ваш вопрос слишком широкий. Ваша проблема в том, что вы не уверены, как отображать данные в DataGrid? или вы не знаете, как получить доступ к свойствам файла? Если первое, обратитесь к документации для DevExpress DataGrid . Если последнее, я отсылаю вас к документации MSDN для FileInfo msdn.microsoft.com/en-us/library/… Общий совет: не задавайте слишком широких вопросов и всегда объясняйте, что вы пробовали в первую очередь, а что не сработало.

2. @Squiggle спасибо. В настоящее время моя проблема заключается в обоих. Событие должно обрабатывать заполнение данных в DataGrid, но большая часть этой проблемы заключается в считывании Name, FullName, Extention, LastAccessTime и LastWriteTime из DirectoryInfo . Я использовал dataGridView1.DataSource = new DirectoryInfo(path).GetFiles() стандартный DataGridView, и он возвращает все возможные атрибуты, к сожалению, для этого решения мне нужно использовать инструменты DevExpress

3. Пожалуйста, сведите этот вопрос к решению только одной проблемы. И, что важно, проверьте StackOverflow на наличие существующих решений для каждого из них. В вашем вопросе, пожалуйста, предоставьте больше информации о том, что вы уже пытались.

Ответ №1:

CustomUnboundColumData запускается для каждой видимой ячейки несвязанного типа. Это означает, что если у вас есть 5 несвязанных столбцов и 100 файлов, ваши вызовы будут выполняться 500 раз при каждом перерисовывании сетки.

Почему бы не использовать подход с использованием источника данных? Например, вы можете заполнить его следующим кодом

 var d = new DirectoryInfo("c:\");
var files = d.GetFiles("*.*").Select(x =>  new
    {
        x.Name,
        x.FullName,
        x.Extension,
        x.LastAccessTime,
        x.LastWriteTime
    }).ToList();
gridControl.DataSource = files;
  

Я использовал динамические данные, вы также можете использовать класс. Все, что вам нужно сделать в вашей сетке, это присвоить столбцам соответствующее имя поля и связать их.