В настоящее время я изменяю существующее приложение, удаляю старые элементы пользовательского интерфейса и заменяю их стандартными компонентами 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;
}
}
Мне очень интересно узнать, почему это кажется несовместимым ... почему прошла первая условная проверка? Когда остальные не совпадают, хотя они одинаковы.