C# .NET – Definicija Master – Detail veze dve tabele

Skraćena veza: http://pedja.supurovic.net/veza/5353

Podešavanje prikaza master/detail vezu dve tabele u .NET nije baš očigledno nekome ko je navikao na neku drugu platformu. Zato, evo kratkog primera kako to podesiti :

//
//
// kreiraj dataset
ds = new DataSet();

//
//
// kreiraj master tabelu
DataTable dtMaster = new DataTable();
dtMaster.Columns.Add ("id_master", typeof (string));
dtMaster.Columns.Add ("description", typeof (string));

//
//
// napuni je podacima
dtMaster.Rows.Add ("1", "prvi");
dtMaster.Rows.Add ("2", "drugi");
dtMaster.Rows.Add ("3", "treci");
dtMaster.Rows.Add ("4", "cetvrti");

//
//
// podesi primarni kljuc
DataColumn[] MasterPrimaryKeyColumns = new DataColumn[1];
MasterPrimaryKeyColumns[0] = dtMaster.Columns["id_master"];
dtMaster.PrimaryKey = MasterPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add (dtMaster);

//
//
// kreiraj detail tabelu
DataTable dtDetail = new DataTable();
dtDetail.Columns.Add("id_detail", typeof(string));
dtDetail.Columns.Add("description", typeof(string));
dtDetail.Columns.Add("id_master", typeof(string));

//
//
// napuni je podacima
dtDetail.Rows.Add("1", "1-1", "1");
dtDetail.Rows.Add("2", "1-2", "1");
dtDetail.Rows.Add("3", "2-3", "2");
dtDetail.Rows.Add("4", "3-4", "3");
dtDetail.Rows.Add("5", "3-5", "3");
dtDetail.Rows.Add("6", "3-6", "3");
dtDetail.Rows.Add("7", "3-7", "3");
dtDetail.Rows.Add("8", "4-8", "4");
dtDetail.Rows.Add("9", "4-9", "4");
dtDetail.Rows.Add("10", "4-10", "4");

//
//
// podesi primarni kljuc
DataColumn[] DetailPrimaryKeyColumns = new DataColumn[1];
DetailPrimaryKeyColumns[0] = dtMaster.Columns["id_detail"];
dtMaster.PrimaryKey = DetailPrimaryKeyColumns;

//
//
// dodaj tabelu u DataSet
ds.Tables.Add(dtDetail);

//
//
// podesi relaciju izmedju tabela i nju dodaj u DataSet
DataRelation drMasterDetail = new DataRelation("fk_master_detail",
dtMaster.Columns["id_master"],
dtDetail.Columns["id_master"]);
ds.Relations.Add(drMasterDetail);

//
//
// kreiraj BindingSource za Master tabelu
BindingSource bsMaster = new BindingSource();
bsMaster.DataSource = dtMaster;

//
//
// BindingSource za Detail tabelu se vezuje za
// BindingSource Master tabele, a kao DataMebmer
// se navodi naziv relacije Master/Detail
BindingSource bsDetail = new BindingSource();
bsDetail.DataSource = bsMaster;
bsDetail.DataMember = "fk_master_detail";

//
//
// povezi BindingSource za odgovarajuce gridove na formi
dgMaster.DataSource = bsMaster;
dgDetail.DataSource = bsDetail;

Da biste isprobali ovaj kod, umetnite ga u konstruktor forme ili u Load() događaj a na formu postavite dva grida dgMaster i dgDetail. […]
[ ... vidi ceo članak ... ]

C# .NET – ComboBox Lookup from Detail Table

Skraćena veza: http://pedja.supurovic.net/veza/5252

Ovo moram da zabeležim, jer mi je neverovatno da sam potrošio sate i sate da bih iskopao kako da napravim tako prostu i banalnu stvar.

Imate tabele MasterTable i DetailTable. Tabela MasterTable ima polje detail_id preko koga je povezano sa tabelom DetailTable. Tabela DetailTable ima samo dva polja: detail_id i description.

Hoćete na masci da imate ComboBox koji će prikazati listu vrednosti iz tabele DetailTable tako što će prikazati vrednosti polja description a kada se izabere određena vrednost u MasterTable.detail_id upisati vrednost polja DetailTable.detail_id.

Ako krenete intuitivno sigurno nećete nigde stići. Dokumentacija na Majkrosoft sajtu je bedna i neupotrebljiva, a ako pokušate da na Internetu nađete neki primer kako ovo podesiti naići ćete samo na polovične primere koji ne rade. […]
[ ... vidi ceo članak ... ]