Dodawanie pozycji w tabeli

Dodawanie pozycji w tabeli
  • Rejestracja: dni
  • Ostatnio: dni
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

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


  • Rejestracja: dni
  • Ostatnio: dni
0

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

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Aplikacja WFA

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

DataGrid ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

prosze...

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Tak jak pisałam:

Kopiuj
 
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

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
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:

Kopiuj
// 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:

Kopiuj
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;
}
  • Rejestracja: dni
  • Ostatnio: dni
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ą

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
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.

  • Rejestracja: dni
  • Ostatnio: dni
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

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
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ć?

MN
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam

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

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

Pozdrawiam
Marcin

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.