hierarchical grids (datarelation)

Joined
Aug 11, 2003
Messages
5
i have a dataset with 2 tables and a relation between these 2 tables

now i show both tables in 2 grids on one form

what i want is:

when i klick in a row in the mastergrid the slavegrid should show only those records that fit the key in the mastergrid

e.g. : customers and orders -->
when im at a certain customer in the mastergrid, i only whant to see the orders for that customer in the slavegrid

here the code (dataset & relation created in the designer)

SqlDataAdapter1.Fill(DataSet11, "master")
SqlDataAdapter2.Fill(DataSet11, "slave")

With DataGrid1
.DataSource = DataSet11
.SetDataBinding(DataSet11, "master")
End With

With DataGrid2
.DataSource = DataSet11
.SetDataBinding(DataSet11, "slave")
End With




how does the

slaveGrid_CurrentCellChanged method look like ??

or do i have to use a dataview where i set the key explicitly ????
 
what is displayed in a datagrid is (usually) defined by the TableStyle property of the grid. You need to define the TableStyle for the Master/Slave_1/Slave_2/etc/etc view you want to show in your grid and assign the MappingName property of each TableStyle to each view. Although when you first start doing this it seems complex and too much hassle, it quickly becomes easy and KewL... check out the DataGrid section here...

Windows Forms FAQ


for lots of really useful info on getting to grips with the DataGrid control
 
misunderstanding ??

tnx for the reply csharpener, but there must have been some misunderstanding

first of all, I doent know how many records are in the master-table, so I cannot create a tablestyle for every record there, and I really think you didnt meen that I should

I have TWO GRIDS, and they should be related in that way, so that the slavegrid always shows all records (and only those) belonging to the ACTUAL record of the mastergrid
(e.g. all orders of a customer)

Im not really familiar with tablestyles, but I did use them already, and I doent think, my problem has something to do with tablestyles
 
ok... i think I understand what you mean now...


Once you have selected a record in the master (grid) you want to show the slave grid with only the records that are related to the selected row in the master (grid)... ?


one way to do this might be to find the relation field in the master DataSet and filter the slave DataSet based on this value.

IE (sorry.. this is C# syntax)

private void MyGrid1.CurrentRowChanged(object sender, System.EventArgs e)
{
DataRowView DV = (DataRowView)MyGrid1.BindingContext[DataSet11, "master"].Current;
FilterDataSet2(DV["Row_ID"]);
}

private void FilterDataSet2(int row_id)
{
this.DataSet11.Tables["Slave"].DefaultView.RowFilter = "ForeignKeyField = " + ROW_ID " "";
}


maybe someone will translate this to VB? (or have a better suggestion :))

CS
 
it works, and it doesnt work

thanks a lot for your help -

even though im a little confused now

the example works without an error, but the set of records in the slave-grid is not filtered by setting the filterrow-property (at least the grid shows the same set of records as before ...)


BUT :

when I create an extra DataView Object for the slave-table and bind this to the grid IT WO-ORKS

thanks again
 
Back
Top