1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# Listbox para Datagridview

Discussão em 'Programação' iniciada por NightShade, 30 de Maio de 2012. (Respostas: 1; Visualizações: 1062)

  1. NightShade

    NightShade Power Member

    Boas pessoal..
    Preciso de uma ajuda, já estou farto de procurar e não consigo resolver...

    tenho este programa:
    [​IMG]


    do lado esquerdo uma listbox que vai buscar os dados a uma Base de dados, neste caso a tabela País.
    Do lado direito uma datagridview onde quero mostrar os nomes dos jogadores do país que está selecionado na listbox.

    o codigo que tenho no form é este:

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    string selectedIte = listBox1.SelectedItem.ToString();
    string q = "SELECT * FROM Equipa WHERE ColumnName = @nome'" + selectedIte + "'";
    SqlDataAdapter da = new SqlDataAdapter(q, "connString");
    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;
    }

    o que estou a fazer de mal?

    Cumprimentos
     
  2. tkm_[pt]

    tkm_[pt] Power Member

    Esse SQL está um pouco estranho. Por exemplo, se escolheres "Brazil", o teu SQL fica assim:
    Código:
    SELECT * FROM Equipa WHERE ColumnName = @nome'Brazil'
    Outra coisa que acho estranho é teres um parâmetro logo no SQL. Nunca usei os parâmetros de SQL assim, logo não sei se funciona ou não.
    Se funcionar dessa forma, tens que adicionar o valor desse parâmetro depois de especificares o SQL:
    Código:
    rivate void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string selectedIte = listBox1.SelectedItem.ToString();
                [B]string q = "SELECT * FROM Equipa WHERE ColumnName = @nome'";[/B]
                SqlDataAdapter da = new SqlDataAdapter(q, "connString");
    
    [B]da.SelectCommand.Parameters.Add("@nome'", SqlDbType.VarChar, 255) // Substitui o 255 pelo comprimento que tens na tua DB para o campo
    da.SelectCommand.Parameters["@nome"].value = selectedIt;
    [/B]
                DataTable dt = new DataTable();
                da.Fill(dt);
                dataGridView1.DataSource = dt;
            }
    Como disse antes, não sei se te deixam usar parâmetros quando fazes o código SQL em RunTime. Como alternativa, ou crias um "Stored Procedure" e chamas-o a partir do código ou então constróis a tua query em RunTime.
     

Partilhar esta Página