1
All right?
I’m having trouble with the popular one DataGridView
with data from Dataset.
In my button1
i perform the search, reading and import for the DataGriView
of all xml files in a given directory. Until then it works normal, the data is displayed in the DataGridView
.
DataSet dataSet = new DataSet();
try
{
string[] array2 = Directory.GetFiles("temPFiles", "*.xml");
foreach (string name in array2)
{
dataSet.ReadXml(name);
dtGridViewImportacao.DataSource = dataSet.Tables[9];
}
try
{
prgsbarImportacaoXML.BeginInvoke(new Action(() => {
prgsbarImportacaoXML.Style = ProgressBarStyle.Marquee;
}));
prgsbarImportacaoXML.BeginInvoke(new Action(() => {
prgsbarImportacaoXML.MarqueeAnimationSpeed = 5;
}));
lblStatus.BeginInvoke(new Action(() =>
{
lblStatus.Text = " Lendo arquivos XML individualmente...";
}));
}
catch (Exception exImportarArqXML)
{
MessageBox.Show("Não foi possível realizar a importação do conteúdo do arquivo XML e salvá-lo. Certifique-se de que o mesmo possui uma estrutura correta e válida para um XML de compra. A aplicação está sendo encerrada. Certifique-se de que o arquivo selecionado remete-se a um XML associado a uma Nota Fiscal de COMPRA!\n\n" + exImportarArqXML.Message, "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
}
catch (Exception exLeituraXML)
{
MessageBox.Show("Erro ao realizar a leitura individual dos arquivos XML obtidos!\n\n" + exLeituraXML.Message, "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
Close();
}
But in the button2
, when removing some columns I don’t need, the following error occurs:
'Invalidargument=Value '1' is not a valid value for index. Arg_paramname_name'
in the following part of the code:
this.Invoke(new Action(() => lblStatus.Text = " Reorganizando colunas desnecessárias para leitura..."));
dtGridViewImportacaoXML.Columns.RemoveAt(1); //ERRO AQUI
dtGridViewImportacaoXML.Columns.RemoveAt(2); //ERRO AQUI
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("CFOP");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("uCom");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("qCom");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("vUnCom");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("vProd");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("cEANTrib");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("uTrib");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("qTrib");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("vUnTrib");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("vDesc");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("indTot");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("CEST");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("indEscala");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("xPed");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
dtGridViewImportacaoXML.BeginInvoke(new Action(() => {
try
{
dtGridViewImportacaoXML.Columns.Remove("nFCI");
}
catch (System.ArgumentException)
{
}
catch (Exception exCPROD)
{
}
}));
//lblStatus.BeginInvoke(new Action(() =>
//{
// lblStatus.Text = " Renomeando colunas necessárias para leitura...";
//}));
//dtGridViewImportacaoXML.BeginInvoke(new Action(() =>
//{
// try
// {
// dtGridViewImportacaoXML.Columns[0].HeaderText = "Cód. Barras";
// }
// catch (Exception exCodBarras)
// {
// MessageBox.Show("Não foi possível encontrar a coluna referente ao Código de Barras do(s) produto(s). A aplicação está sendo encerrada. Certifique-se de que o arquivo selecionado remete-se a um XML associado a uma Nota Fiscal de COMPRA!\n\n" + exCodBarras.Message, "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
// Application.Exit();
// }
//}));
//dtGridViewImportacaoXML.BeginInvoke(new Action(() =>
//{
// try
// {
// dtGridViewImportacaoXML.Columns[1].HeaderText = "NCM's";
// }
// catch (Exception exNCM)
// {
// MessageBox.Show("Não foi possível encontrar a coluna referente ao NCM do(s) produto(s). A aplicação está sendo encerrada. Certifique-se de que o arquivo selecionado remete-se a um XML associado a uma Nota Fiscal de COMPRA!\n\n" + exNCM.Message, "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
// Application.Exit();
// }
//}));
It seems as if there were no columns.
So in my button3
, which would be the export of the records to a text file, also nothing happens. Even though the records exist in the datagrid, nothing is exported.
for (int i = 0; i < dtGridViewImportacaoXML.Rows.Count - 1; i++)
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"DataBase\db.txt", true))
{
try
{
file.WriteLine(dtGridViewImportacaoXML.Rows[i].Cells[0].Value.ToString() + "," + dtGridViewImportacaoXML.Rows[i].Cells[1].Value.ToString());
}
catch (Exception exLerLinha)
{
MessageBox.Show("Não foi possível realizar a leitura individual das linhas do arquivo XML. Certifique-se de que o mesmo possui uma estrutura correta e válida para um XML de compra. A aplicação está sendo encerrada. Certifique-se de que o arquivo selecionado remete-se a um XML associado a uma Nota Fiscal de COMPRA!\n\n" + exLerLinha.Message, "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
}
}
The funny thing is that I used the following MessageBox
at the events Click's
of each button
to check the amount of records and columns, both appear values greater than zero.
MessageBox.Show(dtGridViewImportacao.Rows.Count.ToString()); // QUANTIDADE DE REGISTROS É MAIOR QUE 0
MessageBox.Show(dtGridViewImportacao.Columns.Count.ToString()); // QUANTIDADE DE COLUNAR É MAIOR QUE 0
Could someone tell me where I’m going wrong, please? I appreciate everyone’s attention!
You should understand that the first item is 0 and not 1.
– Maury Developer
With the value 0 the same problem also occurs. I had already tested. System.Argued tofrangeexception: 'Invalidargument=Value '0' is not a valid index value. Arg_paramname_name'
– Matheus Oliveira.
The table has 19 columns, in theory starting with 0 or 1 should work, not?
– Matheus Oliveira.