Combobox.Text.Equals не тестирует ожидаемое значение - PullRequest
2 голосов
/ 06 марта 2012

В настоящее время я изменяю существующее приложение, удаляю старые элементы пользовательского интерфейса и заменяю их стандартными компонентами WinForms. Таким образом, этот код работает так, как кажется.

Мой код проходит условную проверку IF, если это не должно быть. Текст для каждого из выпадающих списков по умолчанию <Any>, поэтому они должны пропустить инкапсулированный код.

(Когда фильтры выбраны, они заменяют текст по умолчанию, чтобы выбрать правильные части SQL-запроса для возврата результатов)

Теперь о странной части! Свойство text выглядит как System.Data.DataRowView для некоторых из моих combobox.text. Первоначально это происходило для всех из них, но теперь первая проверка отображается как <Any>, как и предполагалось. (Хотя я вообще ничего не менял)

Скриншот проблемы http://i41.tinypic.com/qnphl2.jpg Как вы можете видеть на этом скриншоте моего кода во время отладки. Прикрепленное значение cbRegGroup.Text равно System.Data.DataRowView, но когда я вхожу в список свойств и прокручиваю до свойства текста, оно отображается как <Any>.

Я очистил и перестроил свой проект ... и проконсультировался с колледжем, но никто из нас не может понять, почему текстовое значение появляется как объект .ToString () '.

Я в недоумении, что делать дальше. Есть предложения?

    private void LoadPupilView()
    {
        try
        {
            this.Cursor = Cursors.WaitCursor;

            dgMain.Rows.Clear();
            //now populate list view
            String filter = "[surname] LIKE '" + SearchString + "%'";
            if (!cbYearGroup.Text.Equals("<Any>"))
            {
                String YearGroupCode = null;
                try
                {
                    YearGroupCode = cbYearGroup.SelectedValue.ToString();
                }
                catch { }

                if (!String.IsNullOrEmpty(YearGroupCode))
                    filter = filter + " AND [yearGroup] LIKE '" + YearGroupCode + "'";
            }

            if (!cbRegGroup.Text.Equals("<Any>"))
            {
                String RegGroupCode = null;
                try
                {
                    RegGroupCode = cbRegGroup.SelectedValue.ToString();
                }
                catch { }

                if (!String.IsNullOrEmpty(RegGroupCode))
                    filter = filter + " AND [registrationGroup] LIKE '" + RegGroupCode + "'";
            }

            if (!cbHouse.Text.Equals("<Any>"))
            {
                String HouseGroupCode = null;
                try
                {
                    HouseGroupCode = cbHouse.SelectedValue.ToString();
                }
                catch { }

                if (!String.IsNullOrEmpty(HouseGroupCode))
                    filter = filter + " AND [houseGroup] LIKE '" + HouseGroupCode + "'";
            }

            DataRow[] dataRows = tblPupils.Select(filter);
            foreach (DataRow datarow in dataRows)
            {
                dgMain.Rows.Add(new object[] { 
                    datarow[0].ToString(),
                    datarow[1].ToString() + " " + datarow[2].ToString(),
                    datarow[5].ToString(),
                    datarow[4].ToString(),
                    datarow[6].ToString(),
                    datarow[3].ToString()
                });

            }
        }
        catch (Exception err)
        {
            MessageBox.Show("Error : " + err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            this.Cursor = Cursors.Default;
        }


    }

Мне очень интересно узнать, почему это кажется несовместимым ... почему прошла первая условная проверка? Когда остальные не совпадают, хотя они одинаковы.

1 Ответ

2 голосов
/ 06 марта 2012

Вам необходимо установить для свойства DisplayMember ComboBox имя столбца, который вы хотите отобразить.

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