#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, и он возвращает все возможные атрибуты, к сожалению, для этого решения мне нужно использовать инструменты DevExpress3. Пожалуйста, сведите этот вопрос к решению только одной проблемы. И, что важно, проверьте 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;
Я использовал динамические данные, вы также можете использовать класс. Все, что вам нужно сделать в вашей сетке, это присвоить столбцам соответствующее имя поля и связать их.