Привязать DataGridView к таблице в базе данных

Я хочу связать DataGridView с таблицей в моей базе данных. Я нашел несколько тем по этому поводу, но я не могу заставить его работать. Возможно, я что-то упустил.

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

Посмотри, что я сделал:

    SqlDataAdapter daTab;
    DataTable dTable;

    private void button1_Click(object sender, EventArgs e)
    {

        string s;
        s = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\tempDB\Database1.mdf;Integrated Security=True";
        SqlConnection conn= new SqlConnection(s);
        conn.Open();

        daTab = new SqlDataAdapter("Select * From tab", conn);
        dTable = new DataTable();
        daTab.Fill(dTable);
        BindingSource bSource = new BindingSource();
        bSource.DataSource = dTable;
        dgv1.DataSource = bSource;
    }

Но он только обновляет DataViewGrid при запуске

daTab.Fill(dTable);

Поэтому у меня может быть два варианта: 1) заставить его работать правильно (вот почему мне нужна ваша помощь) или 2) установите таймер и запустите daTab.Fill(dTable); в некоторый промежуток времени. Я особенно присматриваю за вариантом 1). Итак, я был бы признателен за любую помощь, оказанную.

1 ответ

Похоже, вы используете SQL Server. Если это так, взгляните на класс SqlDependency. Вы можете создать делегат для события OnChange этого класса и получать уведомления об изменениях, которые затем можно распространить в свой GridView. Вот хорошая рецензия на тему с несколькими примерами: https://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx

Другие вопросы по тегам