Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataBindings и label / 1 сообщений из 1, страница 1 из 1
08.04.2013, 23:02
    #38218006
rubi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataBindings и label
Доброго времени суток.

Есть две таблицы: Писатели(ИД_писателя, Фамилия) --ИД_писателя = ИД_автора--> Книги(ИД_книги, ИД_автора, Название), отношение один писатель ко многим книгам (прошу не критиковать логическую структуру базы - просто сочинил для топика аналог реальной БД). В datagridview выводятся книги, хотелось бы в label отображать фамилию писателя.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
private DataSet _dataSet;
	private SqlDataAdapter _adapterBooks;
	private SqlDataAdapter _adapterWriters;
	
	BindingSource bsBooks;
	BindingSource bsWriters;
	BindingSource bsAuthors;
	
	DbProviderFactory factory;
	
	private void GetData()
	{
		_dataSet = new DataSet();
		_dataSet.Locale = System.Globalization.CultureInfo.InvariantCulture;

		//==================================================================
		//создаем адаптеры
		//==================================================================
		_adapterBooks = new SqlDataAdapter();
		_adapterBooks.SelectCommand = new SqlCommand(@"SELECT * FROM Книга", conn);

		_adapterWriters = new SqlDataAdapter();
		_adapterWriters.SelectCommand = new SqlCommand(@"SELECT * FROM Писатели", conn);
		
		//-------------создаем адаптеры


		//==================================================================
		//заполняем датасет и создаем отношения     
		//==================================================================
		_adapterBooks.Fill(_dataSet, "Книги");
		_adapterBooks.FillSchema(_dataSet.Tables["Книги"], SchemaType.Source);
	 
		_adapterWriters.Fill(_dataSet, "Писатели");
		_adapterWriters.FillSchema(_dataSet.Tables["Писатели"], SchemaType.Source);
		
		relation = _dataSet.Relations.Add("Авторы",
		  _dataSet.Tables["Писатели"].Columns["ИД_писателя"],
		  _dataSet.Tables["Книги"].Columns["ИД_автора"]); 
		
		//------------заполняем датасет и создаем отношения


		//==================================================================
		//устанавливаем bindings и SQL-команды для вкладки Главное
		//==================================================================
		bsBooks = new BindingSource(_dataSet, "Книги");

		bsWriters = new BindingSource(_dataSet, "Писатели");

		bsAuthors = new BindingSource(bsWriters, "Авторы");

		tbName.DataBindings.Add(new Binding("Text", bsBooks, "Название", true));//textBox с названием книги
		lblAuthor.DataBindings.Add(new Binding("Text", bsAuthors, "Фамилия"));//label с фио автора

		DbCommandBuilder builderBooks = factory.CreateCommandBuilder();
		builderBooks.DataAdapter = _adapterBooks;
		_adapterBooks.InsertCommand = builderBooks.GetInsertCommand();
		_adapterBooks.UpdateCommand = builderBooks.GetUpdateCommand();
		_adapterBooks.DeleteCommand = builderBooks.GetDeleteCommand();
		
		...
	}



Логично сыпет ошибку, что свойство Фамилия не найдено, т.к. в bsAuthors только ИД_писателя и автора. И вопрос в том, как вывести в label фамилию писателя. При этом не хотелось бы расширять скрипт для _adapterBooks, т.к. не получится воспользоваться DbCommandBuilder
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataBindings и label / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]