0

最後の列が DataGridViewComboBoxColumn として追加された DataGridView があります。

問題は、列「メモ」が存在するかどうかを判断できることです

if(grid.Columns.Contains("Notes")){
}

しかし、DataGridViewComboBoxColumn の見出しでこの同じ方法を試してもうまくいきません。なぜそうなのか、誰でも示唆できますか?

グリッドを作成し、DataGridViewComboBoxColumn を追加する関数を次に示します。Mikhail Tregubov は、列が既に存在するかどうかを判断するコードを下部に提案しています。それはそこにあります!

private void _buildDataTable()
        {

            // create a data table object
            DataTable dataTable = new DataTable();

            // add columns
            dataTable.Columns.Add("Channel");
            dataTable.Columns.Add("Date");
            dataTable.Columns.Add("First Name");
            dataTable.Columns.Add("Last Name");
            dataTable.Columns.Add("DOB");
            dataTable.Columns.Add("NI Number");
            dataTable.Columns.Add("Notes");
            dataTable.Columns.Add("Agg. Max[%]");
            dataTable.Columns.Add("Agg. Inclination[%/min]");
            dataTable.Columns.Add("Agg. LagPhase[s]");

            // CONCENTRATION COL
            // TEST TYPE DROP DOWN COL

            // add initial rows row to data grid for 4 channels - only 4 possible
            DataRow dataRow1 = dataTable.Rows.Add();
            DataRow dataRow2 = dataTable.Rows.Add();
            DataRow dataRow3 = dataTable.Rows.Add();
            DataRow dataRow4 = dataTable.Rows.Add();

            // Add initial data to the new rows
            dataRow1[0] = "1"; // channel number
            dataRow1[1] = DateTime.Now.ToString("d/M/yyyy");
            dataRow1[7] = "0";
            dataRow1[8] = "0";
            dataRow1[9] = "0";
            dataRow2[0] = "2"; // channel number
            dataRow2[1] = DateTime.Now.ToString("d/M/yyyy");
            dataRow2[7] = "0";
            dataRow2[8] = "0";
            dataRow2[9] = "0";
            dataRow3[0] = "3"; // channel number
            dataRow3[1] = DateTime.Now.ToString("d/M/yyyy");
            dataRow3[7] = "0";
            dataRow3[8] = "0";
            dataRow3[9] = "0";
            dataRow4[0] = "4"; // channel number
            dataRow4[1] = DateTime.Now.ToString("d/M/yyyy");
            dataRow4[7] = "0";
            dataRow4[8] = "0";
            dataRow4[9] = "0";

            // Add drop downs to the table for test type
            DataGridViewComboBoxColumn testTypeCol = new DataGridViewComboBoxColumn();

            // create a new datatable for the test type
            DataTable dataTable2 = new DataTable();

            // Add the column
            dataTable2.Columns.Add(new DataColumn("Value", typeof(string)));

            // Add drop down rows
            dataTable2.Rows.Add("A23187");
            dataTable2.Rows.Add("ADP");
            dataTable2.Rows.Add("Arachidonic Acid");
            dataTable2.Rows.Add("Collagen");
            dataTable2.Rows.Add("CRP");
            dataTable2.Rows.Add("Epinephrine");
            dataTable2.Rows.Add("PMA");
            dataTable2.Rows.Add("Ristocetin");
            dataTable2.Rows.Add("TRAP6");
            dataTable2.Rows.Add("U46619");
            dataTable2.Rows.Add("γ-Thrombin");

            // set the columns data source
            testTypeCol.DataSource = dataTable2;

            // set properties
            testTypeCol.ValueMember = "Value";
            testTypeCol.HeaderText = "Aggregation Test Type";

            // set the data in the gridview
            this._dataGrid.DataSource = dataTable;

            if (this._dataGrid.Columns.Contains("Aggregation Test Type") && this._dataGrid.Columns["Aggregation Test Type"].GetType() == typeof(DataGridViewComboBoxColumn))
            {
                MessageBox.Show("ALREADY");
            }
            else
            {
                // add column to the datagridview
                this._dataGrid.Columns.Add(testTypeCol);
            }

        }
4

1 に答える 1

0

質問が列の型が DataGridViewComboBoxColumn かどうかを判断する方法である場合は、typeof を使用してみてください。元:

        if(grid.Columns.Contains("Notes") && grid.Columns["Notes"].GetType() == typeof(DataGridViewComboBoxColumn))
        {
            //do something
        }

問題が、Contains メソッドが grid.Columns コレクションに追加された DataGridViewComboBoxColumn で正しく機能しないということである場合は、DataGridViewComboBoxColumn の新しいインスタンスを作成してグリッドに追加する方法などのコードを追加してください。

于 2013-06-17T09:39:04.090 に答える