Изборник Затворити

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.

У овом примеру је намерно дат код који сам прави и пуни табеле да бисте могли да га испробате без потребе да користите неку базу. У програмима ћете углавном податке у табеле учитавати из неке базе. Уместо ручног уметања редова као у овом примеру, ви ћете табелу напунити податке преко DataAdapter-а.

Слични чланци

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *

Попуните израз тако да буде тачан: *

Ово веб место користи Акисмет како би смањило непожељне. Сазнајте како се ваши коментари обрађују.