Dodawanie pozycji w tabeli

0

Mam mały problemik
Mam tabele i chciałam, aby po akcji dodawało mi do tabeli nowy wiersz z określonymi danymi. Moja tabela ma 3 kolumny. Proszę skorygujcie mój kod

 
Grids.Rows.Add(
                    this.Grids[0, ?].Value = tekstbox1.Text;
                    this.Grids[1, ?].Value = tekstbox2.Text;
                    this.Grids[2, ?].Value = tekstbox3.Text;
                        );


0

Oj nie wiem czemu wygererowaly sie dwa posty. Przepraszam moderatorze ;(

0

Ale co nazywasz tabelą? Piszesz aplikację desktopową czy webową? Ten opis pasuje do co najmniej 10 kontrolek wyglądających jak tabela...

0

Aplikacja WFA

0

A tabela to czym jest? ListBox, DataGrid, DataGridView?

0

DataGrid ;)

0

Nie poradziła sobie z rozwiazaniem problemu, możecie pomóc?

0

prosze...

0

Po jakiej akcji, co ma się dodawać? Skąd maja być pobierane dane?

0

Tak jak pisałam:

 
Grids.Rows.Add(
                    this.Grids[0, ?].Value = tekstbox1.Text;
                    this.Grids[1, ?].Value = tekstbox2.Text;
                    this.Grids[2, ?].Value = tekstbox3.Text;
                        );

Akcja na przycisk
dane z teksboxu1, teksboxu2, teksboxu3
sa zapisywane do nowo utworzonego wiersza w istniejącej już tabeli, kolejno w kolumnie pierwszej, drugiej i trzeciej

0

To najprościej będzie utworzyć nowy obiekt DataTable. Do niego wpisywać dane a później tylko powiązać tą tabele z DGV. Something like this:

// Gdzieś do zainicjowania
private DataTable _table = new DataTable();
private DataColumn _col = new DataColumn();
private DataRow _row;

    // To najlepiej dodać w metodzie FormCreate
    _col = new DataColumn("Nazwa 1");
    _table.Columns.Add(_col);

    _col = new DataColumn("Nazwa 2");
    _table.Columns.Add(_col);

    _col = new DataColumn("Nazwa 3");
    _table.Columns.Add(_col);

To podpinamy pod przycisk:

private void InsertData(object sender, EventArgs e)
{
    _row = _table.NewRow();
    _row[0] = tekstbox1.Text;
    _row[1] = tekstbox2.Text;
    _row[2] = tekstbox3.Text;

   _table.Rows.Add(_row);

   dataGridView1.DataSource = _table;
}
0

Do czegoś podobnego doszłam, jednak porzuciłam to rozwiązanie, bo przy każdym przyciśnięciu buttona zamiast dodwac nową pozycje to nadpisuje starą

0

W moim rozwiazaniu nie nadpisuje wiersza a dodaje nowy.

EDIT:
teraz tak patrzę na ten kod i tworzenie kolumn w tabeli należy wyrzucić poza obsługę zdarzenia. Nie może się za każdym kliknięciem dodawać komplet nowych kolumn. Co już zresztą poprawiłem.

0

Super! Dzięki!
Mam jeszcze jednak pytanie jak ustawić width trzeciej kolumny na 200?
Czemu używa się podłogi np. "_col" co ona oznacza? przecież bez podłogi też by działało

0

Szerokość kolumny ustawia się na elemencie DGV: dataGridView1.Columns[2].Width = 200;
Taką przyjąłem konwencje nazewniczą i tak nazywam zmienne.

0

Dzięki za pomoc, kod ktory mi napisałeś pojełam, jednak zaciekawiłam się Twoją konwencja, mozesz coś o niej powiedzieć, lub podac jej nazwe? chetnie o tym poczytam

0
Klara napisał(a):

Dzięki za pomoc, kod ktory mi napisałeś pojełam, jednak zaciekawiłam się Twoją konwencja, mozesz coś o niej powiedzieć, lub podac jej nazwe? chetnie o tym poczytam

To jest "konwencja z podłogą na początku", można o niej powiedzieć tyle, że nazwy pól z nie wiadomo jakiej przyczyny mają podłogę na początku, co wygląda badziewnie, a poza tym nic z tego nie wynika. O czym tu czytać?

0

Witam

Znowu nie mam pod ręką VS, ale czy to nie powinno wyglądać po prostu tak:

 
Grids.Rows.Add(textbox1.text,textbox2.text,textbox3.text);

Pozdrawiam
Marcin

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