Привязка DataGridView с замороженными столбцами при отправке пользовательского интерфейса - PullRequest
1 голос
/ 22 сентября 2011

У меня есть форма с datagridview, которую нужно заполнить, когда пользователь завершит поиск. Я не привязываю данные к сетке, пока не будет выполнен поиск, потому что источник привязки зависит от того, какой поиск они выполняют.

У меня есть следующий код для загрузки данных путем вызова хранимой процедуры:

private void SearchData()
{
    string returnMessage = string.Empty;
    DateTime dateSelected = this.DatePicker.Value.Date;

    // clear the DataGridView prior to running the search
    DataGridView.DataSource = null;

    switch (m_QueueSelected)  // this is grabbed via the search criteria combobox
    {
        case 70:    //  search 1
            Data.SearchOneTableAdapter.Fill(DataSet.spSearchOne, ref returnMessage, m_QueueSelected, dateSelected);

            SearchOneBindingSource.DataSource = DataSet.spSearchOne;
            DataGridView.DataSource = SearchOneBindingSource;
            break;
        case 80:    // search 2
            Data.SearchTwoTableAdapter.Fill(DataSet.spSearchTwo, ref returnMessage, m_QueueSelected, dateSelected);

            SearchTwoBindingSource.DataSource = DataSet.spSearchTwo;
            DataGridView.DataSource = SearchTwoBindingSource;
            break;
        default:
            Data.SearchDefaultTableAdapter.Fill(DataSet.spSearchDefault, ref returnMessage, m_QueueSelected, dateSelected);

            SearchDefaultBindingSource.DataSource = DataSet.spSearchDefault;
            DataGridView.DataSource = SearchDefaultBindingSource;
            break;
    }
}

После привязки данных к сетке я выполняю некоторое форматирование столбцов, в том числе замораживаю первый столбец в сетке, чтобы при прокрутке по первому столбцу он всегда отображался. Я получал сообщение об ошибке, в котором говорилось что-то вроде 'you cannot load a frozen column after another frozen column' Поскольку я использую несколько источников привязки, я обнаружил, что мне нужно сначала удалить источник данных, прежде чем загружать какие-либо другие. Поэтому я использую код, указанный выше:

DataGridView.DataSource = null;

Исправлено сообщение об ошибке «замороженный столбец». Однако вчера я применил фильтр заголовков столбцов , что вызвало некоторые проблемы. Фильтр создается и применяется к столбцам с использованием DataBindingComplete Event

private void DataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    string filterStatus = DataGridViewFilterableColumnHeaderCell.GetFilterStatus(DataGridView);
    if (!String.IsNullOrEmpty(filterStatus))
    {
        RecordCountLabel.Text = filterStatus;
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что я изменяю DataGridView.DataSource = null, там нет столбцов / ячеек, которые фильтр может определить, и происходит сбой при попытке выполнить дополнительный поиск. Если я перестану делать столбцы замороженными, мне не нужно будет устанавливать источник данных равным нулю, и у меня не будет проблем.

Короче говоря, кто-нибудь знает, как повторно использовать сетку данных с несколькими источниками привязки и использовать замороженный столбец, не устанавливая источник данных в нуль?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...