ADICIONANDO LINHAS NO DATAGRID

SAMUELHARSO 07/08/2014 01:28:07
#440244
Olá !!!

Meu, eu estava vendo esse video: [Ô]https://www.youtube.com/watch?v=4JJGxM92fSI[Ô]
E o cara ensina algumas coisas com DataGrid, eu não consegui colocar aquelas linhas que ele coloca na Propriedade: [Ô]ColumnReaderRowCount[Ô]

Estou usando o Visual Studio 2008.

Alguém sabe como fazer ?

Obrigado desde já !!
LUIS.HERRERA 07/08/2014 07:54:28
#440246
Samuel o datagrid trabalha com DataSource, onde você associa um objeto DataReader, Table, etc... de modo muito mais prático. Para incluir uma linha no grid, você precisa manipular esse objeto que associou ao DataSource e depois associar novamente, veja o exemplo.

Nota: Eu faço tudo via código para ter o controle então...


//Monto o grid
private void MontaGridRegistros()
{
gridRegistros.DataSource = null;
gridRegistros.Columns.Clear();

// criando as colunas
int i = 0;
gridRegistros.Columns.Add([Ô]IDREGISTRO[Ô], [Ô]IDREGISTRO[Ô]);
gridRegistros.Columns[i].DataPropertyName = [Ô]IDREGISTRO[Ô];
gridRegistros.Columns[i].Visible = false;

i = 1;
gridRegistros.Columns.Add([Ô]IDEMPRESA[Ô], [Ô]IDEMPRESA[Ô]);
gridRegistros.Columns[i].DataPropertyName = [Ô]IDEMPRESA[Ô];
gridRegistros.Columns[i].Visible = false;

i = 2;
gridRegistros.Columns.Add([Ô]IDENTIFICADOR[Ô], [Ô]Identificador[Ô]);
gridRegistros.Columns[i].DataPropertyName = [Ô]IDENTIFICADOR[Ô];
gridRegistros.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
gridRegistros.Columns[i].DividerWidth = 1;
gridRegistros.Columns[i].Width = 130;
gridRegistros.Columns[i].Visible = true;

......

gridRegistros.Refresh();
}

//chamo o carregamento dos dados
MontaGridRegistros();

// comunicação com a classe BLL
RegistroBLL obj = new RegistroBLL();
List<RegistroModelo> listRegistros = new List<RegistroModelo>();

try
{
listRegistros = obj.MontaGridRegistros(myIDEmpresa);

if ((listRegistros == null) || (listRegistros.Count == 0))
{
MessageBox.Show([Ô]Sem Registros Localizados[Ô], [Ô]TituloAvisoMSG[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
gridRegistros.DataSource = listRegistros; //associo um DataReader ao grid e preenche automaticamente.
}
ClasseAcoesForms.AtualizaLayoutGrids(gridRegistros); //Método para dar refresh e zebrar grid após carregamento
}
catch (SqlException ex)
{ .... }
catch (Exception ex)
{ .... }
finally
{
.....
}

//INCLUIR NOVA LINHA NO GRID VIA CÓDIGO:
private void cmdIncluirRegistro_Click(object sender, EventArgs e)
{
//-> Crio uma list vazia para incluir os dados
List<RegistroModelo> tempListRegistros = new List<RegistroModelo>();
RegistroModelo tempIncluir = new RegistroModelo();
if (gridRegistros.RowCount != 0)
{
//-> pego a lista do DataSource do grid para manipular pois já possui alguma linha
tempListRegistros = (List<RegistroModelo>)this.gridRegistros.DataSource;

//-> primeiro procura na lista para ver se já existe este item
foreach (RegistroModelo procura in tempListRegistros)
{
if (txtIdentificador.text == procura.Identificador)
{
MessageBox.Show([Ô]Registro Já Cadastrado[Ô], [Ô]TituloAvisoMSG[Ô], MessageBoxButtons.OK, MessageBoxIcon.Stop);
txtIdentificador.Focus();
return;
}
}
tempIncluir.IDREGISTRO = 0;
tempIncluir.IDEMPRESA = Convert.ToInt32(txtIDEmpresa.Text);
tempIncluir.IDENTIFICADOR = txtIdentificador.text;
tempListRegistros.Add(tempIncluir);
}
else
{
// grid não tem nenhuma linha ainda, então inclui a primeira
tempIncluir.IDREGISTRO = 0;
tempIncluir.IDEMPRESA = Convert.ToInt32(txtIDEmpresa.Text);
tempIncluir.IDENTIFICADOR = txtIdentificador.text;
tempListRegistros.Add(tempIncluir);
}
MontaGridRegistros();
this.gridRegistros.DataSource = tempListRegistros;
ClasseAcoesForms.AtualizaLayoutGrids(gridRegistros);
}

SAMUELHARSO 11/08/2014 17:45:30
#440346
Obrigado pela ajuda Luis ! ,

Mas eu estava querendo aprender a colocar em cima daquelas colunas (Column1,2 etc...)
Faça seu login para responder