c# - Is there any way to relate between tables in a DataSet -


i have dataset 3 tables categories, items , products. can access them individually. want bind them in 3 different comboboxes such that, changing categories reflects items , changing items reflects products. guess might done creating relations between tables. please me on this.

there bunches of ways skin cat ado.net data sets, can make relations between data tables dataset.relations. check out msdn documentation more info.

here example relations outlined , taking far enough down 1 possible path give idea:

var ds = new dataset();  // add categories table categoryid column, , add few rows it. var categories = ds.tables.add("categories"); var categoryidcolumn = categories.columns.add("categoryid", typeof(int)); categories.rows.add(new object[] { 1 }); categories.rows.add(new object[] { 2 }); categories.rows.add(new object[] { 3 });  // add items table itemid & categoryid (fk) columns, , add few categories-relatable rows it. var items = ds.tables.add("items"); var itemidcolumn = items.columns.add("itemid", typeof(int)); var itemcategoryidcolumn = items.columns.add("categoryid", typeof(int)); items.rows.add(new object[] { 11, 1 }); items.rows.add(new object[] { 12, 2 }); items.rows.add(new object[] { 13, 3 });  // add products table productid & itemid (fk) columns, , add few items-relatable rows it. var products = ds.tables.add("products"); var productidcolumn = products.columns.add("productid", typeof(int)); var productitemidcolumn = products.columns.add("itemid", typeof(int)); products.rows.add(new object[] { 21, 11 }); products.rows.add(new object[] { 22, 12 }); products.rows.add(new object[] { 23, 13 });  // add fk relationships (or data relations were). var categoryitemsrelation = ds.relations.add("fk_categoryitems", categoryidcolumn, itemcategoryidcolumn); var itemproductsrelation = ds.relations.add("fk_itemproducts", itemidcolumn, productitemidcolumn);  // run through example of selected id in categories dropdown. int selectedcategoryid = 1; var selectedcategory = categories.select(string.format("categoryid = {0}", selectedcategoryid))[0]; var filtereditems = selectedcategory.getchildrows(categoryitemsrelation);  console.writeline("selectedcategoryid == {0}", selectedcategoryid); console.writeline("selectedcategory[categoryidcolumn] == {0}", selectedcategory[categoryidcolumn]); foreach (var childitem in filtereditems) {     console.writeline("filtereditems includes:");     console.writeline(             "\t{0} : {1}, {2} : {3}",             itemidcolumn.columnname,             childitem[itemidcolumn],             itemcategoryidcolumn.columnname,             childitem[itemcategoryidcolumn]); }  // ...and forth. 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -