Привязать 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