2012-01-18 2 views
1

У меня есть DataGridView, связанный с BindingList<T> пользовательского бизнес-объекта с полями DeckID, Name, UserID, Size и Notes.DataGridView BindingDataSource с внешним ключом

Это вызвано из базы данных MSSQL через объект IDataReader. Теперь моя проблема в том, что UserID - это целое число, которое в моей базе данных является внешним ключом к таблице SystemUser с полем Username.
Что я хочу сделать, это захватить имя пользователя из таблицы SystemUser в моей базе данных и показать, что на основе любого UserID отображает это имя. Это было очень легко в WebForms, используя GridView, но не так много в приложении WindowsForms.

+0

вы должны добавить тег платформы (silverlight, asp.net, winforms и т. Д.) –

+0

Вы можете написать собственный запрос, в котором вы присоединяетесь к этим таблицам. – pistipanko

+0

Правда, но тогда мне нужно было бы создать новый класс для хранения конкретного запроса от SQL, а также поставщика данных и контроллера для этого класса. Я знаю, что это возможно сделать в Web Forms, поэтому я почти уверен, что это должно выполняться в Windows Forms. На мой взгляд, это должно быть что-то довольно распространенное ... – Jack

ответ

0

Я думаю, что вижу то, что вы ищете. Из экземпляра DataGridView выберите выбранный элемент, используя событие, например onSelectionChange. Следующее использование:

var selectedItem = datagridviewinstance.SelectedRows[x].DataBoundItem as YourTypeHere 
var data = (from a in SOMETHING where fk == selectedItem.ForeignKeyProperty select a); 
textbox1.Text = data.text; 

Теперь вы можете сделать свой следующий вызов базы данных для извлечения внешнего ключа объекта и обновления любой GUI объекта, который вы хотите. Удачи!

+0

Извините, я только что делал вещи на C# ... Я вообще не знаю VB.NET, я не понимаю, что говорит вторая строка ... но я знаю, как получить объекты данных из GridView. Я просто не понимаю, как заставить DataGridView автоматически выбирать данные внешней таблицы. – Jack

+0

Если вы не хотите изменять свой DTO для изначального извлечения данных, вам придется сделать второй вызов базы данных. Поместите событие в «Изменение выбора». Там ваш вызов базы данных настраивается с помощью внешнего ключа. Когда вы измените свой выбор, дататайд будет «автоматически выбирать» данные внешнего ключа. – user959729

+0

Извините всех, после некоторых сообщений в MSDN, они связали меня со статьей здесь, в StackOverflow, и решение находится здесь: http://stackoverflow.com/questions/3758757/c-sharp-datagridviewcomboboxcolumn-binding-problem – Jack

Смежные вопросы