Diskuze: C# WPF Aktualizace dat zapsaných v metodě v jiné třídě
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= 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.
Můžeš si třeba poslat do toho druhého okna instanci toho hlavního a po uložení nového záznamu spustit "znovunaplnění" gridu v hlavním okně...
Já to obecně páchám takto:
V příslušné třídě naplním ObservableCollection daty z databáze
V hlavním okně vytvořím třeba
public void NactiData()
{
//zde je příkaz třídě, aby naplnila kolekci
trida.naplnkolekci();
DataGrid.DataContext = trida;
}
přes binding naplním DataGrid tou kolekcí z třídy
Do "ukládacího" okna si pošlu instanci hlavního okna (kde mám ten
DataGrid), to si otevírám jako dialog. Tím pádem mohu spustit ten "public
void" z hlavního okna a před uzavřením tohoto okna spustím naplnění
DataGridu v tom hlavním okně...
Nevím jestli je to nejideálnější řešení, ale jiné zatím neumím...
To by mohlo fungovat. Jen se optám, jak spustíš v hlavním okně to druhé okno?
DruheOkno druheokno = new DruheOkno();
druheOkno.ShowDialog();
?
A jakou hlavičku vytvoříš v druhém okně?
public DruheOkno()
{
InitializeComponent();
.....
?
DruheOkno druheokno = new DruheOkno(this);
druheOkno.ShowDialog();
druhé okno
private HlavniOkno form;
Public DruheOkno(HlavniOkno instance)
{
InitializeComponent();
this.form = instance;
}
a pak v tom DruheOkno můžu spustit akci z hlavního okna
this.form.NejakaAkce();
Nevím, z čeho plníš ten DataGrid, ale pokud např. z ObservableCollection jako já, tak ji nezapomeň vždycky před naplněním vyprázdnit, jinak se aktualizované záznamy jakoby "připíšou" za již načtená data a v DataGridu se na první pohled nic nezmění, ale data se zobrazí, resp. přidají znovu na konci...
K naplnění DataGridu používám
OleDbCommand cmd = new OleDbCommand();
if (con.State != ConnectionState.Open)
con.Open();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM [Osoby] ORDER BY Prijmeni ASC";
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
DataGridOsoby.ItemsSource = dt.AsDataView();
Problém s duplicitou dat při načtení nového seznamu (i bez vyprázdnění) nemám. Je tam vždy jen jeden seznam.
Pořád zkouším přijít proč se někdy aktualizuje a jindy ne, ale ne a ne na to přijít. Každopádně pokud na to příjdu, tak dám vědět. I kdyby pro zajímavost.
Zobrazeno 8 zpráv z 8.