Re[4]: DataViewManager и DataGrid
От: Аноним  
Дата: 18.03.03 19:40
Оценка:
Здравствуйте, SCS, Вы писали:

SCS>Здравствуйте, Аноним, Вы писали:

А>>Получается что этот DataView будет иметь общие свойства для всех связанных таблиц.
SCS>для каждой таблицы ты сам в программе создаешь свой view (если оно тебе надо). и свой-ва будут наследоваться для каждого view свои из DataViewSetting (если делать через DataViewManager.CreateDataView).

А>>А как задать разные параметры AllowNew, AllowDelete для двух связанных таблиц, отображаемых в одном DataGrid.

SCS>через свой DataView или DefaultView
А>>Можно пример для BindingContext через обработчик CurrentCellChanged.
SCS>
SCS>просто привязывай поле таблицы к соответссвующему Property (например ComboBox.Text)
SCS>оно само разберется когда что менять через CurrencyManager

Вариант 1.
DataSet dataClient;
Заполняем dataClient через адаптер...

Проставляем связи
dataClient.Relations.Add("Цены", dataClient.Tables["CLIENT"].Columns["Ccode"], dataClient.Tables["CLIENTS_PRICE"].Columns["Ccode"]);

DataView clientView = new DataView (dataClient.Tables["CLIENT"]);
clientView.AllowNew = false;

dataGridClients.SetDataBinding(clientView, null);
Все таблицы в гриде отображаются по свойствам clientView.

Вариант 2.
DataSet dataClient;
Заполняем dataClient через адаптер...

Проставляем связи
dataClient.Relations.Add("Цены", dataClient.Tables["CLIENT"].Columns["Ccode"], dataClient.Tables["CLIENTS_PRICE"].Columns["Ccode"]);

DataViewManager dvmClient = new DataViewManager(dataClient);
DataClient clientView = dvmClient.CreateDataView(dataClient.Tables["CLIENT"]); //??
clientView.AllowNew = false;

dataGridClients.SetDataBinding(dvmClient, "CLIENT"); //не работает свойство AllowNew = false!
dataGridClients.SetDataBinding(clientView, null); //Работает как первый вариант.

Видно я чего не допонимаю в этих DataViewManagerах и DataViewaх, пожалуйста приведи пример для связанных таблиц, что-бы по ним можно было навигировать, и при этом можно было выставлять разное свойство AllowNew.

По поводу BindingContext.
Не понятно к чему его привязывать в гриде, что бы по выбору новой строки — он обновлял combobox.
После установки DataBinding постоянно висит первый элемент.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.