9 Comments

  • Yeah, you're right, you are missing something 8)





    What you do is bind the sub-grid to the relation, and then just set the CurrencyManager.Position to the current index of the list. For example (based on Northwind), assume you have a DataSet (_ds) with two tables (Orders and OrderDetails), and a relationship (CustOrders). The ListBox is bound to Orders, showing the OrderID only (not hugely useful, but it suffices for this example). The set the grid (dgOrderDetails) bindings like so:





    dgOrderDetails.SetDataBinding(_ds, "Orders.CustOrders");





    In the SelectedIndexChanged event for the list then do this:





    CurrencyManager mgr = (CurrencyManager)this.BindingContext[_ds, "Orders"];


    mgr.Position = lstOrders.SelectedIndex;





    You just set the Position of the CurrencyManager for the parent table, and since there is a table relation (which is tracked by the binding), the sub grid changes, reflecting only the sub-rows for the selected parent row.





    Mail me (contact details on daveandal dot net) if you want a full sample.





    Dave

  • Thanks for the great answer. It does simplify work a lot when working with a listbox.


    however, what about when I want to use a TreeView as the Parent Data Source?


    I have no way to data bind a treeview, so I use the Tag property of each node to hold a DataRow object. Now, once I have a clicked node, How do i find the correct Index to set the position to?

  • Can you write an article about how to bind a dataset to a datagrid with lookup tables? It is impossible to find this on the internet.



    For example: I have a customer table that has a 2 digit code that represents the country they live in. That 2 digit code coorespondes to another table that has a list of all the countries.



  • This is a really good example. But I just have one other question. I know that I can delete rows of the datagrid by using the delete button on my keyboard, but I would like to also place a delete button on the datagrid form itself.



    Could you please tell me how to determine which dataview i.e. (tables 1, 2 or 3 ) that the user is currently in on a drill-down datagrid with 3 relations so that I can delete the correct rows from the correct datatables when the user clicks my ‘delete button’.



    In other words, how can I determine which row is clicked on which table?

  • I'm afraid I don't know the answer to that one.

    And I really don't have time to check right now.

    perhaps over the weekend..

  • Ok Roy,



    Any help would be greatly appreciated...this has really been a headache for me :)



    Thanks again,



    Madyooper

  • About that delete button....



    I have a problem i am trying to solve which is close to this one.

    The question is : Can i programatically invoke the delete row operation caused by pressing the delete key when using a button to do the delete?



    My problem is this - I cannot update the DataTable until the user presses a Save Button. When i press the delete button I have no problem deleting the selected row, However after the first time the SelectedRowIndex cannot be used as an index for the rows in the DataTable (Again - i cannot do accept changes until the user presses Save) cause the number of rows in the grid now does not correspond to the number of rows in the DataTable.



    Any ideas on how i do this??

    Thanks in advance

    Arik

  • About that delete button....



    How can I catch the event when the user presses the delete button on any ro in Datagrid so that I can write a code where the data can be deleted from the database also . As visible the row is deleted but not from database .



    Any ideas.....

    Thanks

    Atul

  • how can i prevent changes when go next or prev record without pressing save button?

Comments have been disabled for this content.