Непосредственное обновление таблицы данных моей таблицы. - PullRequest
0 голосов
/ 15 ноября 2009

[Примечание: я упростил мой пример для ясности]

Допустим, у меня есть база данных Sqlite с двумя таблицами: Предметы и Секторы:

Продукты

id_items : INTEGER PRIMARY KEY
name_item : VARCHAR(...)
id_sector : INTEGER

Секторы

id_sector : INTEGER PRIMARY KEY
name_sector : VARCHAR(...)

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

Следовательно, в моем Winforms CustomControl у меня есть все данные загрузки и привязки, которые происходят в методе load ():

colSector.DataSource = m_dataContext.SectorTable;
colSector.DisplayMember = "name_sector";
colSector.ValueMember = "id_sector";
ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable);

В выпадающих списках моего просмотра данных имеются данные из таблицы Sectors .

Теперь мне нужна кнопка в моей форме, которая позволила бы создать новый сектор:

Я создал txtbox (txtNewSector) и кнопку, которая запускает создание:

    private void btnAddNewSector_Click(object sender, EventArgs e)
    {
        // Add new sector to db
        m_dataContext.AddNewSector(newSectorName);

        // refresh dataview so that comboboxes are updated with the new entry
        ???
    }

Как я могу выполнить это обновление?

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

С наилучшими пожеланиями

Ответы [ 2 ]

1 голос
/ 25 ноября 2009

вместо

???

добавить

ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable);
0 голосов
/ 15 ноября 2009

Вы можете использовать timer для этого. Он выполнит задачу через определенный промежуток времени.

Взгляните на пример Таймер на C # .

Вы найдете идею его использования.

Мне дают грубый набросок

private DataTable LoadData()
{
  DataTable  dt  = LoadDatabaseData();

  return dt;
}

private void timer1_Tick(object sender, System.EventArgs e)
{

   myDataGrid.DataSource = LoadData();

   myDataGrid.Databind();

         or 

  your combo box's datasource what ever.

}

Примечание. Вы используете SQLite, о котором я понятия не имею, кроме базы данных. Я только показал вам, как вызывать функцию, которая будет источником данных для вашей сетки, и через каждые 1 секунду (я имею в виду любой интервал времени, который вы указываете) данные будут обновляться.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...