1

タブページ を追加し、データソースとしてクエリで満たすデータグリッドビューを作成し、それにいくつかの視覚的な変更を加えてから、別のタブページに対して同じことを行う1つのタブコントロールがあります。

コードを実行すると、グリッドビューに表示したいデータが得られます。2番目の視覚的な変更を除いて、すべて問題ありません。私はデバッグに行き、視覚的な変更が行われていないことがわかりました。これは、技術的にクエリが 2 番目の datagridview を datasource is = {} として返すため、視覚的な変更を加える行がないためです。とにかく、データはdatagridviewに表示されています。私はdatagridviewsの順序を変更しようとしましたが、それはまったく同じ問題だったので、コードの順序に関するものだと思いますが、何をどこで正確に理解していません。

Access 2010 ファイルのデータにアクセスして、C# で Visual Studio 2012 に取り組んでいます。そして、問題のコードは次のとおりです。

        ///Tabela por calibrar
        DataTable tabelaEqui = null;
        tabelaEqui = calibracaoBL.planoCalibracaoAtualCalibradosServico(DateTime.Now.Year, servico);
        DataGridView gridPorCalibrar = new DataGridView();
        gridPorCalibrar.DataSource = tabelaEqui;

        tabControl1.TabPages.Add(cbServico.Text + " - Por Calibrar");

        tabControl1.TabPages[0].Controls.Add(gridPorCalibrar);
        gridPorCalibrar.Dock = DockStyle.Fill;
        gridPorCalibrar.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
        gridPorCalibrar.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
        for (int i = 0; i < gridPorCalibrar.Rows.Count - 1; i++)
        {
            for (int j = 5; j < gridPorCalibrar.Rows[i].Cells.Count; j++)
            {
                string s = gridPorCalibrar.Rows[i].Cells[j].Value.ToString();
                Boolean b = !s.Equals("");
                if (b)
                {
                    gridPorCalibrar.Rows[i].Cells[j].Style.BackColor = Color.Green;
                }
            }
        }
        mudarCabeçalho(gridPorCalibrar);


        ///Tabela Calibrados
        DataTable dt = null;
        dt = calibracaoBL.planoCalibracaoAnosAnterioresServico(DateTime.Now.Year, servico);
        DataGridView gridCalibrados = new DataGridView(); // here I got check and dt = {}
        gridCalibrados.DataSource = dt;

        tabControl1.TabPages.Add(cbServico.Text + " - Calibrados");

        tabControl1.TabPages[1].Controls.Add(gridCalibrados);
        gridCalibrados.Dock = DockStyle.Fill;
        gridCalibrados.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
        gridCalibrados.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;
        for (int i = 0; i < gridCalibrados.Rows.Count - 1; i++)
        {
            for (int j = 5; j < gridCalibrados.Rows[i].Cells.Count; j++)
            {
                string s = gridCalibrados.Rows[i].Cells[j].Value.ToString();
                Boolean b = !s.Equals("");
                if (b)
                {
                    gridCalibrados.Rows[i].Cells[j].Style.BackColor = Color.Green;
                }
            }
        }
        mudarCabeçalho(gridCalibrados);

これが最初のものです: ここに画像の説明を入力

これが2番目のものです: ここに画像の説明を入力

@varocarbas に応じて更新:

データソースが 2 つの点で空白であることを確認しています。ポイント 1: dt = calibracaoBL.planoCalibracaoAnosAnterioresServico(DateTime.Now.Year, servico); // クエリを実行するメソッドは {} を返します。しかし、クエリ自体は問題なく機能するため、問題ではありません。他の場所で試してみると、完全に機能しています。

ポイント 2: DataTable dt = null; dt = calibracaoBL.planoCalibracaoAnosAnterioresServico(DateTime.Now.Year, servico); DataGridView gridCalibrados = new DataGridView(); // ここで dt 変数を確認すると、dt={} が表示されます

コードはfor (int i = 0; i < gridCalibrados.Rows.Count - 1; i++)に入りますが、gridCalibrados.Rows.Count = 0 なのでループをスキップします。

これがメソッドmudarCabeçalhoです

    public void mudarCabeçalho(DataGridView grid)
    {
        for (int i = 5; i < grid.ColumnCount; i++)
        {
            string[]  s = grid.Columns[i].HeaderText.Split('-');
            switch (s[1])
            {
                case "01":
                    grid.Columns[i].HeaderText = "Jan";
                    break;
                case "02":
                    grid.Columns[i].HeaderText = "Fev";
                    break;
                case "03":
                    grid.Columns[i].HeaderText = "Mar";
                    break;
                case "04":
                    grid.Columns[i].HeaderText = "Abr";
                    break;
                case "05":
                    grid.Columns[i].HeaderText = "Mai";
                    break;
                case "06":
                    grid.Columns[i].HeaderText = "Jum";
                    break;
                case "07":
                    grid.Columns[i].HeaderText = "Jul";
                    break;
                case "08":
                    grid.Columns[i].HeaderText = "Ago";
                    break;
                case "09":
                    grid.Columns[i].HeaderText = "Set";
                    break;
                case "10":
                    grid.Columns[i].HeaderText = "Out";
                    break;
                case "11":
                    grid.Columns[i].HeaderText = "Nov";
                    break;
                case "12":
                    grid.Columns[i].HeaderText = "Dez";
                    break;

            }
        }
    }
4

0 に答える 0