2009-12-01 2 views
4

В настоящее время у меня есть в моем приложении к DataGridView, который я заполнить из моих классов Linq-на-SQL, как так ...Лучший способ освежающий DataGridView.DataSource

/// <summary> 
    /// Delegate to update datagrid, fixes threading issue 
    /// </summary> 
    private void updateInfo() 
    { 
     // Linq to datagridview; display all 
     var query = from n in dbh.Items select n; 
     itemDataGridView.DataSource = query.ToList(); 
    } 

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

я не помню, но я перед переходом на Linq к SQL ограничен DataGridView был TableAdapter сформирован, и вместо того, чтобы изменять данные в БД вы бы просто вставить с помощью этого TableAdapter, который будет автоматически обновлять DataGridView в надлежащим образом.

Так что мне интересно, если есть какой-то другой способ, я должен делать это с каждым, что гладко обновить?

ответ

2

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

Рэнди

1

Похоже, вы пытаетесь изменить данные за пределами вашего приложения, а затем ваш DataGridView отобразить эти изменения.

Я не знаю, как автоматически опросить базу данных, а затем DataGridView обновит эту строку, чтобы показать более плавное обновление. Для обновления я всегда привязывал DataGridView к DataSource, который содержит SelectAdapter, Update и DeleteCommand TableAdapter (SQL, но аналогичный). Я не думаю, что это проблема LINQ.

Независимо от того, как вы обновляете базовую таблицу, будет какое-то обновление, если вы не редактируете только одно поле, а затем публикуете обновления позже.

1

Я предполагаю, что вы используете WinForms, а затем альтернативы нет. Если вы используете WPF, это возможно, используя методы привязки, существующие в WPF. Однако я не знаю деталей.

1

Как уже отмечалось, ваша проблема не связана с Linq2Sql как таковой, она находится на пути DataGridView обрабатывает источники данных об объектах.

Один из способов работы с потерянной выбранной строкой - сортировать коллекцию, к которой вы привязываетесь, и программным образом выбирать ранее выбранную строку после обновления.

Смежные вопросы