none
Авто сортировка DataGridView (Entity Framework) RRS feed

  • Общие обсуждения

  •  Здравствуйте!

     Подскажите, пожалуйста, как реализовать сортировку строк компонента DataGridView.

     

    Пишу приложение на VS2010 pro, Entity Framework 4.0.

    Есть объект DataGridView, свойство  DataSource которого ссылается на testBindingSource. В обработчике загрузки формы, DataGridView заполняется данными. Необходимо, что бы при щелчке мышью по заголовкам DataGridView выполнялась сортировка.

     

    Почему DataGridView не сортирует данные автоматически? Как реализовать это программно?

     

     

    private void MainForm_Load(object sender, EventArgs e)
    {
       using (var context = MyDBContainer())
       {
         testBindingSource.DataSource = context.tests.Select(n => new { n.ID, n.Name, n.Date, Question= n.Question.Name}); 
       }
    }

     

     

     

     

        

    • Перемещено Siddharth Chavan 1 октября 2010 г. 20:55 MSDN Forums Consolidation (От:Технологии .NET Framework: ADO.NET, WCF, WPF etc)
    • Изменен тип I.Vorontsov 11 октября 2010 г. 13:07
    23 июля 2010 г. 10:47

Все ответы

  • OrderBy наверно самый простой способ.
    28 июля 2010 г. 19:34
    Модератор
  • OrderBy в самом LINQ запросе? Лишний раз обращаться к БД только ради сортировки? Мне кажется должен быть другой (простой) способ отсортировать DataGridView без обращения к БД.
    29 июля 2010 г. 3:54
  • Вообще не совсем понятно

    testBindingSource

    это действительно BindingSource или так DataGridView называется. Если BS то используй

    testBindingSource.Sort = "ID" // Ну или по какому именно полю сортировать хочешь

    Если же DataGridView, то попробуй так:

    BindingSource bs = new BindingSource(testBindingSource.DataSource,null); // BindingSource bs = new BindingSource(this.DataGridView1.DataSource,null);
    bs.Sort = "Name";// соотетственно имя колоники по которой сортируешь

     

    29 июля 2010 г. 9:01
    Модератор
  • testBindingSource имеет тип System.Windows.Forms.BindingSource

    Установка testBindingSource.Sort не влияет на отображение данных в DataGridView.

    Свойство testBindingSource.SupportsSorting возвращает False

    29 июля 2010 г. 12:27
  • Ну попробуй тогда так

    BindingSource bs = new BindingSource(this.DataGridView1.DataSource,null);
    bs.Sort = "Name";
    

    29 июля 2010 г. 19:18
    Модератор
  • Увы, при выполнении этого кода тоже ничего не происходит.
    30 июля 2010 г. 11:36
  • Используй Ria Services!!! Там все просто ! А так в LINQ  укажи Order by и св-ва грида глянь )))
    15 сентября 2010 г. 18:04
  • Уважаемый пользователь!

     

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме
    Для связи [Mail]
    30 сентября 2010 г. 11:44