DataGridView + formularz Details w innym Form

0

Mam pewien problem.
Zaczytuje sobie tabele z bazy danych do datagridview w Form1 - bezproblemowo

Tworze formularz Details (w tym przypadku dwa textboxy) w Form2 - zrobione

Po dwukliku na wierszu w datagridview otwierac ma mi sie Formularz Details w Form2, za pomoca ktorego moglbym wyedytowac wiersz- i tu zaczynaja sie schody. Formularz mi sie otwiera, ale TextBoxy wypelnione sa zawsze danymi z pierwszego wiersza datagrida.

Tzn. wiem, dlaczego sie tak dzieje - Form2 w metodzie load ma wpisane:

this.grupaUslugTableAdapter.Fill(this.salonBetaDataSet.GrupaUslug);

W jaki sposób przekazac mu informacje, ze ma zaczac od wiersza zaznaczonego w datagridzie, a nie od pierwszego?

Jeśli datagrid i Details sa w jednym formie, to zawartosc text boxow wypelnia sie z automatu wraz z klikaniem w grida. Jesli sa na innym formsie - niestety nie.

0

Nie, nie chodzi mi o rzucenie stringa przecztanego z datagrida i wrzucenie do ComboBoxa - w tym przypadku to moze zadziala, ale w innych przypadkach nie wszystkie pole formularza beda widoczne w datagridzie.
Chcialbym, zeby forms z formularzem wypelnial sie danymi z kliknietego wiersza, a nie z pierwszego. Moze mozna przekazac jakos wartosc klucza, a w DataAdapterze zrobic nowa metode fill z klauzula where (numer klucza nie pokazuje sie w datagridzie)

0
  1. masz form1, na form1 grid
  2. na gridzie robisz double click
  3. oprogramowujesz double click ktore wywoluje form2 (w tym momencie przekazujesz jako parametry do np konstruktora form2 te dane ktore masz w zaciągniętym rowku ktoremu zrobiles double click - wykorzystujesz kod z linka ktory ci podalem)
  4. w konstruktorze form2 wypelniasz tekstboxy na form2 z danych wzietych z grida.
    --
    jesli dobrze rozumiem to mowisz ze zaciąga ci dane tylko z jednego wiersza jednej kolumny? w tym masz problem?
0

Jeśli dobrze zrozumiał Twoj kod, to on zaciaga dane widoczne w datagrid - a ja chce zaczytac wszystko.
Poza tym nie do konca to rozwiazanie działa (to chyba nie c#?). Próbowałem wykorzystac przechwytywanie numer wiersza
(GridView1.SelectedRow.RowIndex), ale nie moge wpisac czegos takiego jak "SelectedRow.RowIndex"

Problemem jest to, ze zaczytuje dane z PIERWSZEGO wiersza. A ja chce z tego, na którym był dwuklik.

0

Zrozumiałem, że klikasz na wiersz w dataGridView i ma otworzy się formularz z textBox'ami.
Nie wiem co obsługuje zdarzenie kliknięcia? ContextMenuStrip? Nie ważne, nie wiem jak masz ustawione MultiLine? jeżeli jest true to możesz zaznaczać kilka wierszy jeżeli nie to tylko jeden... Może coś takiego?

if (dataGridView.SelectedRows.Count > 0)
{
       int idUser = Convert.ToInt32(dataGridView.SelectedCells[0].Value);
       string nameUser = dataGridView.SelectedCells[1].Value.ToString();
       
       ...
       ...
}
0

A ja bym zaproponował coś takiego

...

_dataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;

...

Int32 ID=Convert.ToInt32(_dataGridView.SelectedRows[0].Cells["ID"].Value);
DataTable dt=getTableFromDB("select * from tabelka where id="ID.ToString());

...


 Form2 fm=new Form(dt);
 ...
 public Form2(DataTable dt)
 {
 TextBox1.DataBinding.Add("TEXT",dt,"NAZA_KOLUMNY1");
 TextBox2.DataBinding.Add("TEXT",dt,"NAZA_KOLUMNY2");
 }

Co o tym sądzicie.

 
```

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