clem995
clem995

Reputation: 319

Change SelectionMode in a DataGridView from RowHeaderSelect to ColumnHeaderSelect

I fill my DataGridView from a DataTable. My DataGridView has the SelectionMode RowHeaderSelect, but I now want to change it to ColumnHeaderSelect.

But when I change the property I get an exception.

My Code so for the RowHeaderSelect:
How I create my Datatable:

values = new string[numbersOfRows, numbersOfColumns]; //is filled in a different part in the code

DataTable dt = new DataTable();

for (int i = 0; i < numbersOfColumns; i++)
{
    dt.Columns.Add(values[0, i]);
}

for (int j = 2; j < numbersOfRows; j++)
{
    DataRow row = dt.NewRow();
    for (int i = 0; i < numbersOfColumns; i++)
    {
        row[i] = values[j,i];
    }
    dt.Rows.Add(row);
}

How I create my DataGridView:

dgv_schedule.DataSource = dt.DefaultView; //In this line I get my exception when I change 
                                          //the SelectionMode from RowHeaderSelect to 
                                          //ColumnHeaderSelect

Does anyone have an idea what I am doing wrong?
exception: System.InvalidOperationException and I work with WinForms

Upvotes: 2

Views: 323

Answers (1)

clem995
clem995

Reputation: 319

I solved my problem by adding this code:

dgv_schedule.DataSource = dt.DefaultView; //Selection mode is RowHeaderSelect

for (int i = 0; i < numberOfColumns; i++)
{
    dgv_schedule.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
dgv_schedule.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.ColumnHeaderSelect;

Upvotes: 1

Related Questions