Рейтинг:
1
OriginalGriff
Не зная точной ошибки, которую вы получаете, мы должны угадать - но наиболее вероятным является
DataGridView control must be bound to an IBindingList object to be sorted.
Это означает, что вы использовали список непосредственно в качестве источника данных для DGV.
Самое простое решение-преобразовать список в DataTable и использовать его в качестве источника.
Это очень больно, поэтому я написал Вот это:
Преобразование списка в таблицу данных[
^] чтобы сделать именно это...
Тогда это тривиально:
List<MyClass> list = new List<MyClass>();
list.Add(new MyClass() { Name = "DDDD", Date = DateTime.Now });
list.Add(new MyClass() { Name = "BBBB", Date = DateTime.Now.AddDays(-1) });
list.Add(new MyClass() { Name = "CCCC", Date = DateTime.Now.AddDays(-2) });
list.Add(new MyClass() { Name = "AAAA", Date = DateTime.Now.AddDays(-3) });
DataTable dt = list.ToDataTable();
dataGridView1.DataSource = dt;
}
private void SortByName_Click(object sender, EventArgs e)
{
dataGridView1.Sort(dataGridView1.Columns["Name"], ListSortDirection.Ascending);
}
private void SortByDate_Click(object sender, EventArgs e)
{
dataGridView1.Sort(dataGridView1.Columns["Date"], ListSortDirection.Ascending);
}
}
...
public class MyClass
{
public string Name { get; set; }
public DateTime Date { get; set; }
}
5TY
Привет,
Спасибо за ответ. Но прямо сейчас у меня есть ошибка ниже, releted с DataTable dt = list.ToDataTable();
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Список CS1061 ошибка в '<форму form1.класса MyClass&ГТ;' не содержит определение для 'ToDataTable', а не метод расширения 'ToDataTable', принимающий первый аргумент типа 'список<форму form1.класса MyClass&ГТ;' может быть найден (пропущена директива using или ссылка на сборку?)
OriginalGriff
Это потому, что это метод расширения, и вы не поместили его туда, где он может быть использован...
5TY
<pre>
var test = d.DocumentNode.SelectNodes("//td");
string patt = "HOST\\=(.*)\\&\\;SERVICE\\=(.*)...IMG(.*)title\\=\"(.*):(.*):(.*)\"\\salt\\=\"(.*):(.*):(.*)\"\\ssrc(.*)border";
Regex regex = new Regex(patt, RegexOptions.IgnoreCase);
List<Powiadomienie> powiadomienia = new List<Powiadomienie>();
foreach (var item in test)
{
Match match = regex.Match(item.InnerHtml);
if (match.Groups.Count > 1)
{
Powiadomienie powiadomienie = new Powiadomienie();
powiadomienie.Host = match.Groups[1].Value;
powiadomienie.Service = match.Groups[2].Value;
powiadomienie.Time = match.Groups[6].Value;
powiadomienie.Colour = match.Groups[8].Value;
powiadomienie.AltValueTime = match.Groups[9].Value;
if (!powiadomienie.AltValueTime.Contains('m'))
{
powiadomienie.AltValueTime = "0m" + powiadomienie.AltValueTime;
}
if (!powiadomienie.AltValueTime.Contains('h'))
{
powiadomienie.AltValueTime = "0h" + powiadomienie.AltValueTime;
}
if (!powiadomienie.AltValueTime.Contains('d'))
{
powiadomienie.AltValueTime = "0d" + powiadomienie.AltValueTime;
}
if (!powiadomienie.AltValueTime.Contains('s'))
{
powiadomienie.AltValueTime = powiadomienie.AltValueTime + "0s";
}
var temp = powiadomienie.AltValueTime.Replace('d', ':').Replace('h', ':').Replace('m', ':');
var tempSplitted = temp.Split(':');
powiadomienie.Date = DateTime.Now;
powiadomienie.Date = powiadomienie.Date.AddDays(0 - Convert.ToInt32(tempSplitted[0]))
.AddHours(0 - Convert.ToInt32(tempSplitted[1]))
.AddMinutes(0 - Convert.ToInt32(tempSplitted[2]));
powiadomienia.Add(powiadomienie);
}
}
List<Powiadomienie> powiadomieniaWybraneKolory = new List<Powiadomienie>(); powiadomieniaWybraneKolory = powiadomienia.Where(x => x.Colour == "yellow" || x.Colour == "red" || x.Colour == "purple").ToList<Powiadomienie>(); dataGridView1.DataSource = powiadomieniaWybraneKolory;
List<MyClass> list = new List<MyClass>();
list.Add(new MyClass() { Name = "DDDD", Date = DateTime.Now });
list.Add(new MyClass() { Name = "BBBB", Date = DateTime.Now.AddDays(-1) });
list.Add(new MyClass() { Name = "CCCC", Date = DateTime.Now.AddDays(-2) });
list.Add(new MyClass() { Name = "AAAA", Date = DateTime.Now.AddDays(-3) });
DataTable dt = list.ToDataTable();
dataGridView1.DataSource = dt;
Это мой код. Я первый раз пытаюсь разобраться, так что это трудно для меня, как использовать этот метод..
OriginalGriff
И что же? Что же происходит?
5TY
Я забыл добавить 3 последние строки с моим кодом.
List<Powiadomienie> powiadomieniaWybraneKolory = new List<Powiadomienie>(); powiadomieniaWybraneKolory = powiadomienia.Where(x => x.Colour == "yellow" || x.Colour == "red" || x.Colour == "purple").ToList<Powiadomienie>(); dataGridView1.DataSource = powiadomieniaWybraneKolory;