Как выбрать сложный / составной ключ в C #, используя поля со списком? - PullRequest
0 голосов
/ 29 июля 2011

У меня проблема с C # .NET (Visual Studio 2010). У меня есть 2 таблицы данных в SQL2005 Express:

  1. Здание, основным ключом которого является «номер здания»,
  2. и Aparatment, первичным ключом которого является «номер здания» (внешний ключ к таблице зданий) + «номер квартиры». (квартира является слабой сущностью здания и ее ключ является составным).

Обе таблицы являются частью большой базы данных, которую я импортировал в проект как DataSet. Я хочу показать детали квартиры, когда я выбираю номер дома и номер квартиры. Номер здания задается в текстовом поле (значения которого всегда являются номерами зданий, выбранными другим элементом управления), и я хочу, чтобы в комбинированном окне отображались только номера квартир, которые имеет здание в текстовом поле, а не все номера квартир в таблице (что приводит к в чем-то вроде 1, 2, 3, 1, 4, 5, 1, 2, ... (потому что он выбирает все строки)). Не все здания имеют одинаковые номера квартир или одинаковое количество квартир, которые я должен добавить / изменить / удалить на лету.

Выбор части здания сделан и запущен. У меня просто проблема с отображением только текущих квартир в здании (по крайней мере, количество нужных мне квартир).

Я не хочу (точнее, не разрешено) использовать сетку данных. Только «подробные» элементы управления.

Как мне это сделать? У меня мало опыта работы с C #, и я тоже не знаю, как работать «по максимуму» с DataSets. Я подумал, может быть, создать представление, которое даст мне результаты, но я не знаю, как импортировать представление и установить номер здания в качестве параметра. Любой другой здравомыслящий способ также приветствуется.

Пожалуйста, помогите.

Большое спасибо впереди, Шей.

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

ОК. Я еще немного покопался и нашел ответ на второй вопрос.Спасибо Россу за решение DataRow [] и как его заполнить (первый шаг).Для будущих поколений вот соответствующий код:

DataRow [] apartmentCollection = dbBonusHwDataSet.tblApartment.Select ("buildingNum = '" + Convert.ToInt16 (buildingNum_textbox.Text.ToString ()) + "'");

apartmentNum_combox.DataSource = apartmentCollection;

apartmentNum_combox.DisplayMember = "apartmentNum";

Я не знаю, почему кодовый блок отображается неправильно.Извините за использование IE прямо сейчас.Но я не вижу код на вкладке кода ...

0 голосов
/ 29 июля 2011

Я бы создал два раскрывающихся списка для этого, где их автопост задан как true. При загрузке страницы я бы выделил все идентификаторы зданий и поместил их в выпадающий список. Когда раскрывающийся список изменяется, запускается событие onchange, которое заполняет второй раскрывающийся список всеми идентификаторами квартир для соответствующего идентификатора здания.

...