Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

amanda12

populando um gridview

Recommended Posts

PESSOAL TO APRENDENDO MUITO COM você´S, EU TO PRECISANDO SABER COMO FAÇO PARA POPULAR UM GRIDVIEW W COM A ESCOLHA DO USUÁRIO EM UMA LINHA DA GRID ELE PREENCHA AUTOMÁTICO AS COMBOS ABAIXO E DEPOIS EU CLICO NO BOTÃO ALTERAR E ALTERO A TABELA EMPLOYEES DO SQLSERVER

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void Form1_Load(object sender, EventArgs e)
		{

		}

		private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
		{

		}

		private void textBox1_TextChanged(object sender, EventArgs e)
		{

		}

		private void textBox2_TextChanged(object sender, EventArgs e)
		{

		}

		private void textBox3_TextChanged(object sender, EventArgs e)
		{

		}

		private void button1_Click(object sender, EventArgs e)
		{

		}
	}
}

NO MEU FORM TEM 1 GRID VIEW

3 TEXTBOX

1 BOTÃO DE ALTERAR

Compartilhar este post


Link para o post
Compartilhar em outros sites

De forma simplificada é:

 

//aqui você abre a conexão
//cria um objeto do tipo SqlCommand, atribua o comando sql e executa assim:
this.seuGridView.DataSource = cmd.ExecuteReader();
this.seuGridView.DataBind();

Att,

Guilherme Oenning.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, guilherme.

 

Tentei fazer o que você descreveu acima mas não deu certo.

 

// ConnectionFactory.getConnection() retorna uma SqlConnection
using(SqlConnection connection = ConnectionFactory.getConnection())
{
   connection.Open();
   using (SqlCommand command = new SqlCommand("SELECT * FROM Produto", connection))
   {
	   this.dataGridView1.DataSource = command.ExecuteReader();
   }
   connection.Close();
}

E o método DataBind() não existe no DataGridView (pelo menos não no Visual Studio 2008 que eu tenho....)

a não ser que haja um DataGrid somente que eu não conheço.

 

Normalmente eu encapsulo toda a conexão com o banco de dados em uma classe DAO reduzindo a quantidade

de código sql espalhado pela aplicação. Dá MUUUITO mais trabalho mas acho que fica mais organizado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flavio, você deve continuar usando DAO, espalhar objetos SqlConnection por toda aplicação é complicado.

DataBind é para o GridView do ASP.NET, confundi :D

 

DataReader não vai funcionar com o DataGridView, você terá que usar DataSet.

 

using (SqlConnection conn = new SqlConnection(@"Data Source=NOTE-OENNING\SQLEXPRESS;Initial Catalog=budwii;Integrated Security=True"))
{
	conn.Open();
	SqlDataAdapter da = new SqlDataAdapter("SELECT Status FROM Processamento", conn);
	DataTable dt = new DataTable();
	da.Fill(dt);
	this.dataGridView1.AutoGenerateColumns = true;
	this.dataGridView1.DataSource = dt;
}

A explicação é que DataReader é forward-only e read-only, a DataGridView trabalha com edição direto na fonte, no caso o DataReader. (Retirada do MSDN).

 

Att,

Guilherme Oenning

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, eu imaginei que esse seria o problema.

 

Um jeito fácil e "sem codificação" de popular um DataGridView (C#) é criar um dataset utilizando o Wizard:

 

Depois de colocar um DataGridView no seu formulário, vá na propriedade DataSource e escolha a opção "Add project DataSource..."

A janela de Wizard vai aparecer.

Escolha Database, e clique em Next.

No próximo passo aperte o botão "New Connection..." e crie uma nova conexão com o banco de dados, teste a conexão, escolha uma das opções de sensitive data e aperte Next e depois Next de novo.

Agora irá aparecer todos os objetos do banco de dados, escolha a tabela/consulta que você quer, mude o nome em "DataSet Name:" e clique em Finish.

 

Nesse ponto o data grid deve mostrar os campos da tabela/consulta escolhida. Executando a aplicação ele mostra os dados contidos.

 

Para transferir os dados para um textbox você pode colocar o seguinte código no evento CurrentCellChanged, por exemplo:

 

textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
onde o índice em Cells[] corresponde ao número da coluna acoplada ao banco de dados.

 

no botão "Alterar" você coloca o código:

this.<nome_dataset>.<nome_tabela>.Rows[dataGridView1.CurrentRow.Index].SetField(<número_do_campo>, textBox1.Text);

this.<nome_tableAdapter>.Update(this.<nome_dataset>.<nome_tabela>);

 

Pronto, feita a alteração no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.