Diskuze: Datagridview live data
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Jak ta data do toho DGV načítáš? Já dělám kolekci nebo datatable, takže vždycky vyprázdním a znovu načtu kolekci nebo datatable...
Zatiaľ to mám len cez button
private void data_Click(object sender, EventArgs e)
{
string connectionString = "Server=;Database=OitDB;Uid=martin;Pwd=;";
string sql = "SELECT datum as 'Dátum',predmet as 'Predmet', pc as 'Od', sprava as 'Správa' FROM OitDB.nrp";
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlDataAdapter dataadapter = new MySqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "nrp");
connection.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "nrp";
dataGridView1.Columns[0].Width = 125;
dataGridView1.Columns[1].Width = 500;
dataGridView1.Columns[2].Width = 125;
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1;
dataGridView1.AllowUserToAddRows = false;
}
No ja by som potreboval niečo také, kde by som sa vedel voľne pohybovať po tabuľke keď sa budú načítavať nové dáta. Keď to je cez button a timer tak to za každým hodí na poslednú hodnotu takže si nemôžem v pokoji prescrollovať tabuľku.
skúšam to takto:
ale takéto riešenie mi načíta dáta len pri spustení programu. Neviete
niekto ako by som vedel znovu načítať DGV ked do MySql pribudne nový
riadok?
Rozmýšlal som porovnávať počet riadkov medzi MySql a DGV. Nerobil to už
niekto?
private void Form1_Load(object sender, EventArgs e)
{
FillData();
}
public void FillData()
{
using (MySqlConnection myConnection = new MySqlConnection("Server=;Database=OitDB;Uid=martin;Pwd=;"))
{
myConnection.Open();
using (MySqlDataAdapter sqlDa = new MySqlDataAdapter("select * from nrp", myConnection))
{
DataTable dt = new DataTable();
sqlDa.Fill(dt);
dataGridView1.DataSource = dt;
this.dataGridView1.Refresh();
dataGridView1.Columns[0].Width = 125;
dataGridView1.Columns[1].Width = 500;
dataGridView1.Columns[2].Width = 125;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1;
}
}
}
Tu proceduru "FillData();" můžeš spustit vždycky po přidání záznamu, ne?
teraz pozerám že som zle formuloval otázku na začiatku ... takže robím
taký messenger ku nám do firmy na princípe insert, select mysql. Takže
potrebujem robiť "refresh" keď sa v mysql objavý nový riadok. Procedúru
Filldata(); viem použiť len ak ja vykonám INSERT ale ak to odíde z iného
PC, tak ja to neuvidím a naopak. Jeden pán mi poradil že sa takéto veci
robia cez DBMC trigger. No po pravde nikdy som s tým nerobil. Ale určite sa to
dá aj inak.
Ak by niekto vedel o niejakom riešení bol by som mu vďačný.
Zobrazeno 7 zpráv z 7.