C# .NET – Дефиниција Master – Detail везе две табеле

Скраћена веза: https://pedja.supurovic.net/veza/5353

Подешавање приказа master/detail везу две табеле у .NET није баш очигледно некоме ко је навикао на неку другу платформу. Зато, ево кратког примера како то подесити :

//
//
// 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;

Да бисте испробали овај код, уметните га у конструктор форме или у Load() догађај а на форму поставите два грида dgMaster и dgDetail. […]
[ ... види цео чланак ... ]

C# .NET – ComboBox Lookup from Detail Table

Скраћена веза: https://pedja.supurovic.net/veza/5252

Ово морам да забележим, јер ми је невероватно да сам потрошио сате и сате да бих ископао како да направим тако просту и баналну ствар.

Имате табеле MasterTable и DetailTable. Табела MasterTable има поље detail_id преко кога је повезано са табелом DetailTable. Табела DetailTable има само два поља: detail_id и description.

Хоћете на масци да имате ComboBox који ће приказати листу вредности из табеле DetailTable тако што ће приказати вредности поља description а када се изабере одређена вредност у MasterTable.detail_id уписати вредност поља DetailTable.detail_id.

Ако кренете интуитивно сигурно нећете нигде стићи. Документација на Мајкрософт сајту је бедна и неупотребљива, а ако покушате да на Интернету нађете неки пример како ово подесити наићи ћете само на половичне примере који не раде. […]
[ ... види цео чланак ... ]