NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: DataGridView a contextMenuStrip

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Honza67
Člen
Avatar
Honza67:2.1.2017 19:39

Ahoj , nevěděl byste někdo jak předat hodnotu proměnné "Cislo" aby jí to znalo i v message boxu za " CASE A1" .. Čtu hodnoty aktuálního řádku z datagridu a ty pak ještě potřebuju z menu větvit. Díky.

public void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    ContextMenuStrip my_menu = new System.Windows.Forms.ContextMenuStrip();
    int position_xy_mouse_row = dataGridView1.HitTest(e.X, e.Y).RowIndex;
    my_menu.Items.Add("A1").Name = "A1";
    my_menu.Items.Add("A2").Name = "A2";
    my_menu.Show(dataGridView1, new Point(e.X, e.Y));
    my_menu.ItemClicked += new ToolStripItemClickedEventHandler(my_menu_ItemClicked);
    string Cislo =  dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
    string Typ_zbo = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
    string Naz = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
    string Pop = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
    //MessageBox.Show("Data z aktuálního řádku datagridu :" + " " + Cislo + " " + Typ_zbo + " " + Naz + " " + Pop);
}

public void my_menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    {
        switch (e.ClickedItem.Name.ToString())
        {
            case "A1":
                MessageBox.Show("Data z aktuálního řádku datagridu :" + " " + Cislo + " " );
                //MessageBox.Show("Data z aktuálního řádku datagridu :" + " " + Cislo + " " + Typ_zbo + " " + Naz + " " + Pop);
                break;
        case "A2":
            MessageBox.Show("A2");
        break;
    }
    }
}
 
Odpovědět
2.1.2017 19:39
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Honza67
Petr Čech:2.1.2017 20:58
dataGridView1.CurrentItem as ...

místo ... dosaď typ, na který je ten datagrid nabindovaný

Nahoru Odpovědět
2.1.2017 20:58
the cake is a lie
Avatar
Honza67
Člen
Avatar
Odpovídá na Petr Čech
Honza67:2.1.2017 21:57

CurrentItem mi VS vůbec nezná. Nevím proč. Zatím jsem to vyřešil, že dosadím do mess.box místo "Cislo" "dataGridView1­.SelectedRows[0]­.Cells[0].Valu­e.ToString()" . Řešení ale nic moc ..

 
Nahoru Odpovědět
2.1.2017 21:57
Avatar
HONZ4
Člen
Avatar
Odpovídá na Honza67
HONZ4:2.1.2017 23:30

Jak píše Petr Čech, přece můžeš tahat data přímo ze zdroje, na který aktuální řádek (nebo buňka) DataGridView odkazuje.
(aktuální řádek je .CurrentRow)

Editováno 2.1.2017 23:31
 
Nahoru Odpovědět
2.1.2017 23:30
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Honza67
Petr Čech:3.1.2017 16:12

Děláš to ve WF nebo WPF?

Nahoru Odpovědět
3.1.2017 16:12
the cake is a lie
Avatar
HONZ4
Člen
Avatar
Odpovídá na Petr Čech
HONZ4:3.1.2017 17:57

Bylo by rozumné, aby při zakládání vlákna na této musel uživatel zvolit jednu možností čeho se vlákno týká:
WF-C#, WPF-C#, WF-VBA... Stejně tak třeba na diskuzi C/C++.

Často se tu objevují témata, u kterých je důležité zmínit o co se jedná..

 
Nahoru Odpovědět
3.1.2017 17:57
Avatar
Honza67
Člen
Avatar
Honza67:3.1.2017 19:39

Používám WPF-C#,MVS 2015. Datagridview.Cu­rrentRow to zná ale neumím to přesně použít. Mysleli jste to zadat přímo do messageboxu nebo uložit do proměnné a tu jen pak v messageboxu použít. Tak jsem to původně chtěl. Přišlo by mi to přehlednější. Každopádně neumím přesně napsat komplet Datagridview.Cu­rrentRow. Data tahám přes SqlDataAdapter. Přikládám kód. Většinou potřebuju data importovat z mssql přímo do excelu nebo do xml takže zatím s Datagridem nemám moc zkušeností....

SqlDataAdapter sda = new SqlDataAdapter("SELECT ZB.Cis AS Cislo, ZB.Typ_zbo, DE.Naz, De.Pop FROM zbo_nase as ZB INNER JOIN deal_nas as DE on DE.cis = ZB.cis", con);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
DataGridViewColumn column = dataGridView1.Columns[3];
column.Width = 600;
 
Nahoru Odpovědět
3.1.2017 19:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.