Mam w jednym Formsie wyświetloną bazę w dataGridView, po otwarciu nowego Formsa, który dodaje rekord do mojej bazy chce aby po zamknięciu zrobić refresh dataGridView z moimi danymi. W jaki sposób zrobić odwołanie do dataGridView które jest w innym formsie?
0
0
np. przy otwieraniu nowego forsma wrzucić mu przez konstruktor tego drugiego formsa.
private readonly Form1 _f1;
public Form2(Form1 f1)
{
_f1 = f1;
InitializeComponent();
}
public void DoSomething()
{
_f1.Something();
}
w Form1:
new Form2(this);
0
A nie lepiej było by zrobić za pomocą DialogResult
?
Form2 frm = new Form2();
if(frm.ShowDialog() == DialogResult.Ok)
{
//refresh dataGridView;
}
A w Form2
public Form2()
{
InitializeComponent();
}
public void DoSomething()
{
_f1.Something();
DialogResult = DialogResult.Ok;
}
Nie jestem pewien, a nie mam jak sprawdzić, ale nawet nie trzeba pisać this.Close()
w DoSomething()
. Wydaje mi się, że DialogResult.Ok
samo zamknie okno. Poprawcie mnie jeśli się mylę ;)
0
Wrzuć tutaj jak wczytujesz dane do dataGridView
.
0
{
//poloczenie.Open();
List<string>[] list = new List<string>[2];
list[0] = new List<string>();
list[1] = new List<string>();
if (poloczenie.State == ConnectionState.Open)
{
zapytanie = string.Format("SELECT Nr FROM stroje ORDER BY Nr ASC");
komenda = new SQLiteCommand(zapytanie, poloczenie);
komenda.ExecuteNonQuery();
SQLiteDataReader datareader = komenda.ExecuteReader();
while (datareader.Read())
{
list[0].Add(datareader["Nr"] + "");
}
datareader.Close();
poloczenie.Close();
return list;
}
else
{
return list;
}
}
if (poloczenie.State == ConnectionState.Open)
{
List<string>[] list;
list = SelectALL();
dataGridView1.Rows.Clear();
for (int i = 0; i < list[0].Count; i++)
{
int number = dataGridView1.Rows.Add();
dataGridView1.Rows[number].Cells[0].Value = list[0][i];
}
}
else
{
MessageBox.Show("Poloczenie nieudane", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
poloczenie.Close();
1
WTF?!
Co to jest? :D
List<string>[] list = new List<string>[2];
list[0] = new List<string>();
list[1] = new List<string>();
Zrób tak
DataTable dt = new DataTable();
zapytanie = string.Format("SELECT Nr FROM stroje ORDER BY Nr ASC");
komenda = new SQLiteCommand(zapytanie, poloczenie);
SQLiteDataAdapter sda = new SQLiteDataAdapter(komenda, poloczenie);
sda.Fill(dt);
dataGridView.DataSource = dt;
1
Czyli działa. Burdelu w bazie ci nie poprawie, z tym sobie już sam musisz poradzić.