C# - DataGridView: Szukanie?

0

Witam serdecznie!

Wczoraj w internecie znalazłem filmik, który pokazywał jak w DataGridView szukać danych, ale zgubiłem link i szukam u was pomocy.
Wyglądało to mw. tak:

| Name | City | Old |

| Ian | Oxford | 10 |
| Chris | Boston | 15 |
| Andim | Alaska | 18 |
| Georg | Chicago | 20 |
| Billy | Canada | 25 |
| Andrew| Florida | 30 |

Było tam tego wiecej...

Chłopak miał na formie tylko TextBox, 2xButton: pierwszy-(OK), drugi - (Load) oraz DataGridView.
Wpisał w TextBox: Chris, klikał OK, i zaznaczała mu się cała komórka z Chrisem (Wiek, miasto, imię).
Wpisał And, kliknął Ok i zaznaczyły mu się wszystkie kolumny które miały w Name: "And".
Wpisał np Canada (A była tylko jedna tak po środku Grinda) to zaznaczało mu się to i od razu przewinęło do danej komórki.

Chłopak pobierał te dane ze strony, i dotąd udało mi się wpisać kod, a potem padł net ;/:

            DataTable table = new DataTable("table");
            DataColumn Name = new DataColumn("Name", typeof(string));
            DataColumn City = new DataColumn("City", typeof(string));
            DataColumn Old = new DataColumn("Old", typeof(string));
            table.Columns.Add(Name);
            table.Columns.Add(City);
            table.Columns.Add(Old);
            dataGridView1.DataSource = table;
            table.ReadXml(@"Your XML site");
            dataGridView1.DataSource = table;

Jak takie coś wykonać?
Jak się nie uda wszystkiego to chociaż, to ostatnie z " Wpisał np Canada (A była tylko jedna tak po środku Grinda) to zaznaczło mu się to i Od razu przewinęło do danej komórki. "

Pozdrawiam serdecznie!

0

przetłumacz na polski co oznacza „Wpisał np Canada (A była tylko jedna tak po środku Grinda)”.

0

No to tak:

Znalazłem tylko takie coś, jak wyglądał GridView (Jest to tylko przykład):

Było tam na liście grubo ponad 50 osób (Tak, że DataGridView trzeba było przewijać jak na filmię). Jedna z nich pochodziła z Kanady, i znajdowała się tak po środku tej całej listy (Trzeba było przewinąć około 30 osób aby ją znaleŹć. dajmy na to, że ten prawy suwak na filmie był by w połowie...). Chłopak wpisał w TextBoxa: Canada, kliknął button: OK, po czym program sam mu przewinął DataGridView, do pozycji gdzie znajdował się Kanadyjczyk i zaznaczył jego pochodzenie, wiek, imię.

Ew. Może być tak aby wynik tego co miało się zaznaczyć w opcji powyżej, został wpisany np w: TextBox, aby to wyglądało tak:
Imię, Canada, 20
lub:
Imie: <Name>, Miejscowość: <City>, Wiek <Old>

0

No czyli musisz znaleźć numer wiersza zawierającego określone dane w DataGridView, a potem go zaznaczyć, tak?

0

Tak, i jeśli dało by się to jeszcze udać się tam gdzie zostało zaznaczone :)
Żeby nie musieć przewijać całości i szukać tego gdzie jest zaznaczone.

0

Proszę o szybką pomoc.

0

nie jestem na 100% pewien, ale sprobuj w zaznaczonym wierszu wstawiac anchor z nazwa i na koncu daodawac javascript, ktory przewinie do tego anchora

anchor to znacznik
a z nazwa

0

DataGridView nie jest kontrolką webową ;)

Oj, dawno się DGV nie bawiłem, ale spróbuj coś takiego:

            foreach (DataGridViewRow dgvr in dataGridView1.Rows)
            {
                foreach (DataGridViewCell dgvc in dgvr.Cells)
                {
                    if (dgvc.Value.ToString().Contains(textBox1.Text))
                    {
                        dgvc.Selected = true;
                    }
                }
            }

Powinno Ci przewinąć do pierwszego znalezionego wiersza który zawiera w sobie text z texBox1.
To tylko przykład, oprogramuj jak chcesz.

0

Dziękuje za odpowiedzi. :)

Wczoraj już napisałem dobrze działający kod. Gdy wpiszę imię np: Michał to działa dobrze:

user image

Lecz jest jeden problem. Gdy w textboxa wpiszę nie istniejące w DataGridView imię np: "Sara", lub zostawię go pustego i kliknę ok, to mam błąd:

user image

Oto mój kod, na szukanie po name:

private void button4_Click(object sender, EventArgs e)
        {
            string search = textBox1.Text;
 
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Cells[0].Value.ToString() == search)
                {
                    dataGridView1.Rows[i].Selected = true;
                    break;
                }
            }
        }

Wie ktoś jak to rozwiązać?

0

Zmien na:

dataGridView1.Rows.Count - 1

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