We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

Displaying hierarchical data in a grid, using OleDbDataAdapters

Am using OleDbDataAdapter to load 2 tables into a dataset. DataSource of grid is Dataset. The data appears to load in table, ie. can see the correct number of rows etc, but the data is invisible.. also grid doesnt display at all if I try and access an InternalColumn in the relationship. Code will make clear hopefully:- GridModel gridModel = this.gridDataBoundGrid1.Model; GridModelDataBinder gridBinder = this.gridDataBoundGrid1.Binder; System.Data.OleDb.OleDbDataAdapter db = new System.Data.OleDb.OleDbDataAdapter("select * from t_client", da.getConnection()); System.Data.OleDb.OleDbDataAdapter db2 = new System.Data.OleDb.OleDbDataAdapter("select * from t_clientExchange", da.getConnection()); db.Fill(this.ds, "t_client"); db2.Fill(this.ds, "t_clientExchange"); System.Data.DataRelation dr = new System.Data.DataRelation("Clients_Exchanges", this.ds.Tables["t_client"].Columns["clientID"], this.ds.Tables["t_clientExchange"].Columns["clientID"]); this.ds.Relations.Add(dr); this.gridDataBoundGrid1.DataSource = this.ds; this.gridDataBoundGrid1.DataMember = "t_client"; GridHierarchyLevel hlClients_Exchanges = gridBinder.AddRelation("Clients_Exchanges"); GridHierarchyLevel hlClients = gridBinder.RootHierarchyLevel; // when this line uncommnented the grid desont display at all GridStyleInfo exchangeIdStyle = hlClients_Exchanges.InternalColumns["exchangeID"].StyleInfo;

6 Replies

AD Administrator Syncfusion Team September 14, 2003 12:59 PM UTC

Are you seeing any exceptions being displayed in the output window when you run this code? Where are you trying to execute this code? Is it in Form.Load, or at some point where an empty grid is already visible? Can you reproduce this problem in a sample using the northwind database, and attach it here?


JB Jennifer Bell September 14, 2003 01:20 PM UTC

Output window gives this: 'DefaultDomain': Loaded 'c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll', No symbols loaded. 'EuroConfig': Loaded 'C:\gui_datagrid\euroconfig\bin\Debug\EuroConfig.exe', Symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\system.windows.forms\1.0.5000.0__b77a5c561934e089\system.windows.forms.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\system\1.0.5000.0__b77a5c561934e089\system.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\system.drawing\1.0.5000.0__b03f5f7f11d50a3a\system.drawing.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\system.data\1.0.5000.0__b77a5c561934e089\system.data.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\system.xml\1.0.5000.0__b77a5c561934e089\system.xml.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\syncfusion.grid\1.6.1.0__5ae4e43f0df2d735\syncfusion.grid.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\syncfusion.shared\1.6.1.0__5ae4e43f0df2d735\syncfusion.shared.dll', No symbols loaded. 'EuroConfig.exe': Loaded 'c:\windows\assembly\gac\_fusionlic\1.0.0.0__632609b4d040f6b4\_fusionlic.dll', No symbols loaded. FrmAddSomClient.gridDataBoundGrid1_ScrollInfoChanged(of 6, ) FrmAddSomClient.gridDataBoundGrid1_ScrollInfoChanged(of 6, ) The code I gave originally being called in Frm_load event. Running in Visual Studio .NET 2003. Connecting to a Sybase DB using Sybase client 12.5. When I look at thedataset through a dataset debugger, it looks ok - the relationship exists between the 2 tables etc. Dont know anything about NorthWind DB so cant switch over easily. thanks for your response.


AD Administrator Syncfusion Team September 14, 2003 06:21 PM UTC

Here is a sample that seems to work with the northwind database using an OleDbAdapter. The data comes from an MDB file that we ship as sample data. (To run the sample, you may have to change the path if you did not install the Syncfusion controls on teh C drive in the default folders.)


JB Jennifer Bell September 15, 2003 06:23 AM UTC

hiclay - thanks a lot for your example. I replaced your calls to NorthWind with my Sybase oledbadaptor calls and it works! Also the problem seems to be the following, when I try and all column headers the data disappears. Added for the parent row and left the child columns header free, the data was only displayed in child rows. Any ideas what I am doing wrong ? Code below. GridHierarchyLevel hlClients = this.gridDataBoundGrid1.Binder.RootHierarchyLevel;hlClients.LayoutColumns( new string[] { "ClientId","ClientName", "MaxNumberOrders", "MaxOrderQuantity", "MaxOrderValue", "BuyThresholdValue", "SellThresholdValue", }); hlClients_Exchanges.LayoutColumns( new string[] { "", "ExchangeId", "Salesman", "ContractingOffice","MaxNumberOrder", "MaxOrderQuantity", "MaxOrderValue", "BuyThresholdValue", "SellThresholdValue" }); thanks again.


JB Jennifer Bell September 15, 2003 06:35 AM UTC

Ok, figured it ok - the Column names in Layout have to match the column names in the DB. How can I map these the column names in DB to column names I would actually want to display to users ? thanks alot


AD Administrator Syncfusion Team September 15, 2003 08:08 AM UTC

You use the StyleInfo.HeaderText property in either level.GridBoundColumns or level.InternalColumns to set the displayed header text. In the sample, code like this works. GridHierarchyLevel level = this.gridDataBoundGrid1.Binder.AddRelation("CustomerToOrders"); level.InternalColumns["CustomerID"].HeaderText = "cust id";

Loader.
Live Chat Icon For mobile
Up arrow icon