none
Acesso a dados via databindings RRS feed

  • Pergunta

  • Olá pessoal,

    Sou novo aquí e tambem com C#.

    Estou utilizando em minha aplicação este pedaço de código onde preencho os dados de alguns

    textbox. Até aí tudo ok:

    private void TelaClientes_Load(object sender, EventArgs e)

    {

    DataSet ds = CarregaSleClientes("SELECT TOP 1 CODIGO,CLIENTE ROM CLIENTE","CLIENTE");

    cCODIGO.DataBindings.Add("Text", ds, "CLIENTE.CODIGO");

    cNOME.DataBindings.Add("Text", ds, "CLIENTE.CLIENTE");

    }

    private DataSet CarregaSleClientes(string cQuery, string cDSNome)

    {

    string cnxS = ClasseConexaoMsSql.ConnectionString;

    SqlConnection cnx = new SqlConnection(cnxS);

    SqlDataAdapter da = new SqlDataAdapter(cQuery, cnx);

    DataSet ds = new DataSet();

    da.Fill(ds, cDSNome);

    cnx.Close();

    return ds;

    }

    Porém quando seleciono outro cliente via botão "buscar" no menu do form e tento prencher os textboxes com os novos dados:

    private void buscarToolStripMenuItem_Click(object sender, EventArgs e)

    {

    DataSet ds = CarregaSleClientes("SELECT CODIGO,CLIENTE FROM CLIENTE WHERE CODIGO = '00002' ", "CLIENTE");

    cCODIGO.DataBindings.Add("Text", ds, "CLIENTE.CODIGO");

    cNOME.DataBindings.Add("Text", ds, "CLIENTE.CLIENTE");

    }

    recebo esta exceção:

    "This causes two bindings in the collection to bind to the same property.
    Parameter name: binding"

    por favor, o que faço pra dar certo?

    Outra pergunta. Tenho este method Limpar() que peguei em um site.

    Como é que instancio/aciono ele no meu form? Limpar(this controls); ?

    private void Limpar(Control controle)

    {

    foreach (Control c in controle.Controls)

    {

    if (c is TextBox)

    c.Text = "";

    if (c is CheckBox)

    (c as CheckBox).Checked = false;

    }

    }

     

    terça-feira, 16 de janeiro de 2007 20:42

Todas as Respostas

  • Bom como você já associou os bindings aos TextBox´s no Page_load, voce nao precisa usar o Metodo .Add novamente na função embaixo. Voce ta associando o binding duplamente, acredito que se voce remover o .Add do segundo método irá funcionar ou se não antes de associar novamente o binding no segundo método de um cCODIGO.DataBindings.Clear() e cNOME.DataBindings.Clear().

    Sobre o método Limpar() que você mencionou não entendi direito, o método está correto você quer saber o que como chamar ele dentro do seu form?
    Ou voce cria uma classe que contenha esse método, exemplo classe Util.
    Ai dentro do form voce instancia

    Util u = new Util();
    u.Limpar(this);         //this no caso é o próprio form que por sua vez contém uma coleção de controles, checkboxs e textboxs)

    se for static pode chamar direto

    Util.Limpar(this);

     

    Ou voce define o método no proprio form e chama em algum lugar no seu codigo, por exmplo o clique de um botao

    private void btLimpar_Click(object sender, EventArgs e){

    Limpar(this);

    }

    quarta-feira, 17 de janeiro de 2007 19:00