Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView索引超出范围_C#_Mysql - Fatal编程技术网

C# DataGridView索引超出范围

C# DataGridView索引超出范围,c#,mysql,C#,Mysql,我是C新手,在DataGridView方面有一个小问题。我在数据库中选择了两个代码,用不同的列填充这个网格。我希望用户只看到我选择的列,当我开始时,这非常有效,但当我尝试搜索其他列时,我会收到以下消息:System.ArgumentOutOfRangeException:'索引超出范围。它必须为非负且小于集合“Arg\u ParamName\u Name”的大小 我试图清除索引列或重新启动dataviewgrid,但没有成功!需要帮助 private void ConfiguraDataGr

我是C新手,在DataGridView方面有一个小问题。我在数据库中选择了两个代码,用不同的列填充这个网格。我希望用户只看到我选择的列,当我开始时,这非常有效,但当我尝试搜索其他列时,我会收到以下消息:System.ArgumentOutOfRangeException:'索引超出范围。它必须为非负且小于集合“Arg\u ParamName\u Name”的大小

我试图清除索引列或重新启动dataviewgrid,但没有成功!需要帮助

  private void ConfiguraDataGridView(int i)
        {
            switch (i)
            {
                case 1:
                    //setando nome do cabeçalho
                    dgAlmoxarifado.Columns[0].HeaderText = "Nome do Item";
                    dgAlmoxarifado.Columns[1].HeaderText = "Cor";
                    dgAlmoxarifado.Columns[2].HeaderText = "Marca";
                    dgAlmoxarifado.Columns[3].HeaderText = "Modelo";
                    dgAlmoxarifado.Columns[4].HeaderText = "Tamanho";
                    dgAlmoxarifado.Columns[5].HeaderText = "Quantidade";
                    dgAlmoxarifado.Columns[6].HeaderText = "Tipo";
                    dgAlmoxarifado.Columns[7].HeaderText = "Quantidade Recomendada";
                    dgAlmoxarifado.Columns[8].HeaderText = "Data de Cadastro";
                    dgAlmoxarifado.Columns[9].HeaderText = "Cadastro";
                    break;

                case 2:
                    //setando nome do cabeçalho
                    dgAlmoxarifado.Columns[0].HeaderText = "Nome do Item";
                    dgAlmoxarifado.Columns[1].HeaderText = "Cor";
                    dgAlmoxarifado.Columns[2].HeaderText = "Marca";
                    dgAlmoxarifado.Columns[3].HeaderText = "Modelo";
                    dgAlmoxarifado.Columns[4].HeaderText = "Tamanho";
                    dgAlmoxarifado.Columns[5].HeaderText = "Quantidade";
                    dgAlmoxarifado.Columns[6].HeaderText = "Tipo";
                    dgAlmoxarifado.Columns[7].HeaderText = "Requisição";
                    dgAlmoxarifado.Columns[8].HeaderText = "Data de Requisição";
                    dgAlmoxarifado.Columns[9].HeaderText = "Quantidade Requisitada";
                    dgAlmoxarifado.Columns[10].HeaderText = "Reposição";
                    dgAlmoxarifado.Columns[11].HeaderText = "Data de Reposição";
                    dgAlmoxarifado.Columns[12].HeaderText = "Quantidade Repositada";
                    dgAlmoxarifado.Columns[13].HeaderText = "Observação";
                    break;
            }
        }


 private void ResetDataGridView()
    {
        // dgAlmoxarifado.CancelEdit();
        // dgAlmoxarifado.Dispose();
        dgAlmoxarifado.Columns.Clear();
        dgAlmoxarifado.Refresh();
        dgAlmoxarifado.DataSource = null;
    }
编辑:有关此事件的完整代码

加载对象:

  private void IEstoque_Load(object sender, EventArgs e)
        {              
            ResetDataGridView();
            dgAlmoxarifado.DataSource = mt.CarregarGrid(1, txtSearch.Text);
            ConfiguraDataGridView(1);
        }
通过BLL:

  public DataTable CarregarGrid(int opcao, string nomeBusca)
    {
        return cb.CarregarGrid(opcao, nomeBusca);
    }
通过DAL:

 public DataTable CarregarGrid(int opcao, string nomeBusca)
        {
            DataTable dt = new DataTable();
            string comando = string.Empty;

            switch (opcao)
            {
                case 1:
                    comando = "select i.nomeItem, i.cor, i.marca, i.modelo, i.tamanho, i.quantidadeDisponivel,i.tipo, i.quantidadeRecomendada, i.cadastradoNoDia, u.nomeUsuario from itens i join movimentacao m on i.id = m.id_itens join usuarios u on u.id = m.id_usuario where i.nomeItem like @nome ";                    

                    break;
                case 2:
                    comando = "select i.nomeItem, i.cor, i.marca, i.modelo, i.tamanho, i.quantidadeDisponivel,i.tipo, m.requisicao, m.dataRequisicao, m.quantidadeRequisitada, m.observacaoRequisicao,m.reposicao, m.dataReposicao, m.quantidadeReposicao, m.observacaoReposicao from itens i join movimentacao m on i.id = m.id_itens join usuarios u on u.id = m.id_usuario where i.nomeItem like @nome ";
                    break;
            }

            MySqlCommand cmd = new MySqlCommand(comando, connection);
            cmd.Parameters.AddWithValue("@nome", "%"+ nomeBusca +"%");

            try
            {
                Conectar();
                MySqlDataAdapter da = new MySqlDataAdapter(cmd);
                da.Fill(dt);
                return dt;
            }
            catch (MySqlException ex)
            {
                string erro = ex.Message;
                return dt;
            }
            finally
            {
                Desconectar();
            }
        }
然后我有这个按钮搜索:

   private void btnSearch_Click(object sender, EventArgs e)
        {
            if (rdItem.Checked == true)
            {
                ResetDataGridView();
                dgAlmoxarifado.DataSource = mt.CarregarGrid(1, txtSearch.Text);
                ConfiguraDataGridView(1);
            }
            else if (rdMovimentacao.Checked == true)
            {
                ResetDataGridView();
                dgAlmoxarifado.DataSource = mt.CarregarGrid(2, txtSearch.Text);
                ConfiguraDataGridView(2);
            }
        }

当我按下那个按钮时,出现了错误

成功了,多亏了大家的帮助,我的选择出现了问题
字段名中的一个错误,在遵循@Jannick Breunis关于只清理数据源的提示和@Nbk关于直接检查数据表填充的提示后,已解决。

不清除列,只需将数据源设置为null,然后将其设置为相应的数据源。

您确定您的headertextsHi拥有正确的数据源吗!欢迎来到堆栈溢出!看一看,它应该能够非常有效地回答您的问题!请务必同时查看,以便您可以调整我们回答问题的方式。如果e.RowIndex!=-1&e.ColumnIndex!=-1{nbk是的,我确定。问题是,当我搜索代码时,它会填充从0到9的索引,然后如果我搜索其他代码,我的索引不会从0开始,它会从9开始,然后它会爆发。我将发布有关此事件的整个代码