OK, first off.. I know youre new so you'll get some things not quite right, but you should endeavour to use the correct terminology..
That's a DataGridView, not a DataGrid. DG exists, but you arent using it, so please make sure to accurately talk about what youre using..
You dont bind anything to a BindingNavigator; a BN is merely a component that moves the .Position of a BindingSource. A BS is a source of data, and is usually based on an underlying list or table because it has no storage capabilities of its own, it simply filters, orders, allows per-row viewing or the underlying data and maintains relationships.
Now, what you have here is a master/detail or parent/child relationship. Read the DW2 link in my sig, section on Creating a Simple Data App; that app features a relationship. There is another section called "Displaying Related Data" - read that too. It preps you for what comes next:
Expand the data sources tree and looks at your tables. Expand the parent table and look for the node representing the child table. Note that the child table apears in datasources twice. If you drag the main entry out, you get a grid that is bound directly to the child data. If you drag the nested entry out, you get a grid that is bound to the relation exposed by the parent bindingsource.
Note that in NO CASE does this mean that selecting a parent record will cuase the related chld records to be pulled down from the database. You must do this yourself! While it may seem like there is no benefit to establishing a relation if youre only going to have to fill the child data yourself based on selection of a parent, it is intended for use in situations where you want to download e.g. 10 parents and 100 children all at once, and then have .NET maintain the display of data for you. When you select 1 parent, .NET would show only the 10 related children to that parent. This can avoid multiple databsae fill calls at the expense of one larger fill at the start. Also In situations where a lookup table is being used or shown, or child records relate repeatedly to several columns in a parent, this approach makes sense.
After reading the tuts youmust decide:
Are you going to Fill only the child data for this particular parent as and when it is needed,
or are you going to fill child datas for several parents and have .NET swap them for you
In the former case, you have 2 bind sources bound to 2 data tables, 2 tableadapters and fill the child as a response in changing selection in the parent.
In the latter case you have 2 bind sources, the parent being bound to the parent table and thechild being bound to the datarelation exposed by the parent bindsource, you fill parent first, then children ahead of time using a loop something like:
parentDT.BeginLoadData() 'parentDT
parentTA.Fill(parentDT)
childDT.BeginLoadData
For Each ro as ParentRow in parentDT
childTA.FillByParentID(childDT, ro.ID)
Next ro
childDT.EndLoadData()
parentDT.EndLoadData()
DT=datatable, TA=tableadapter
Finally, you ask how to establisha relation when the parent is FName, LName and child is Name?
Make another column on the parent, brand new column, NOT in the database, ONLY in the datatable (yep, DT dont have to reflect database) and set its .Expression to "[FName] + ' ' + [LName]" and establish the relaiton using that.