Refresh dataGridView

0

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

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ć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1