Hi,
I'm using UltraConrolContainerEditor.
I want to assign values of child band to nested grid, so each row will display related child band in the cell row.
I added unbound column to parent grid and set the data type of the column to IList.
I've tried to assign the values of the child band to the cell.
However I'm having problem with picking those values by nested grids. (have two grids for rendering and editing control)
Can I get some example on that?
Thanks,
s
I will be happy to asist you with your inquiry.
I am not sure what you mean by "assigning values of child band to nested grid". May I ask if you can provide me with additional details, including a screenshot, of what you are looking to accomplish with the UltraGrid?
I am looking forward to hearing from you.
Thank you very much for your reply.
What I am looking for is to display the child band inside the cell of the parent grid.
I want to achieve that by using UltraControlContainerEditor.
I have a parent grid and two other grids that I assign to UCCEditor as an editing and rendering controls.
Each row of my parent grid have a child band with different values and different number of rows.
So I want to get the child band values and assign it as a DataSource to those two grids.
Any help will be appreciated.
Thank you,
In the link you have here, the developer was copying a single value from the child row into the parent row. There's no way to put multiple values into the same cell in the grid. A grid cell has only one Value. Of course, that Value could be an object which contains more than one piece of information. But then we are right back where we started - using a single control to display multiple rows in an efficient way.
What kind of assumptions can you make about the child data here? Do you know the maximum number of child rows / columns?
If you just want to display the data in the cell and allow a separate dialog for editing, then maybe you could create a simple UserControl with some TextBoxes that displays the data and is more efficient than using a WinGrid (which has a whole lot of functionality you won't be using).
It's also possible that I am wrong about the performance, but the only way to tell would be to implement it and test it. And like I said, it's not a trivial implementation, so it could be a lot of work for something that ultimately isn't feasible.
Hello,
I want to go ahead with the ControlContainerEditor and two grids.
I have a DataTable with child band values. The values in the DataTable are changing for each parent row.
I populate two grids on InitializeRow event of the parent grid.
But the problem I am facing now is that I overwrite values of the grids with the newly populate DataTable.
And I want to display specific child band values for each parent row.
What to do to not to overwrite the values?
I'm not sure what you mean by "overwrite the values". What values are you referring to?
What I would do is create an unbound column in the parent band. In the InitializeRow event, you need to populate this column with data. So you would loop through the child rows and build some object, like a DataTable, that contains the child row data that you want. Then you set the value of the unbound cell to this object.
If the child row data is not being changed outside of the cell, then you probably only want to do this the first time InitializeRow fires. Is that what you means by overwriting? That InitializeRow is firing again and replacing the data with the original values from the child rows? If that's the case, then all you have to do is check e.ReInitiailize in the InitializeRow event. If this is true, it means the row is being initialized for the second or subsequent time and you should skip building the data again.
I tried to set the unbound cell value like this:
e.Row.Cells("UnboundCell").Value = MyDataTable
but I get the error 'Object must implement IConvertible.'
Any ideas?
I've sorted this, just needed to set cell Data.Type to 'Object'.
However I am still working on the problem..
I display 8 cells in the parent grid and 3 cells in the child grids.
I have more cells in child grids but i'm hiding them, I've loaded them all once and it loaded fine as well.
The performance is fine for now, it does not freeze or anything like that. (know more about that as I go on with testing)
Thank you again,
Great. Just out of curiosity, how many cells are visible at once in the main grid and how many cells in the child grid in the cell?
And how's the performance?
Thank you so much it is working now and doing what I was looking for!
Your guidance Mike helped me to understand better UltraControlContainerEditor, UltraGrid and of course to solve mine problem.
So just quick summary what I have:
In 'ParentGrid_InitializeLayout':
Me.UltraControlContainerEditor1.RenderingControl = Me.Grid1Me.UltraControlContainerEditor1.EditingControl = Me.Grid2
UltraControlContainerEditor1.RenderingControlPropertyName = "DataSource" UltraControlContainerEditor1.EditingControlPropertyName = "DataSource"
Me.ParentGrid.DisplayLayout.Bands(0).Columns("UnboundColumn").EditorComponent = Me.UltraControlContainerEditor1
In ParentGrid_InitializeRow:
And works like a charm!
Well, one obvious missing piece here is the EditingControlPropertyName / RenderingControlPropertyName. By default, the ControlContainerEditor will try to link up the cell's Value with the Value property of the EditingControl (which the WinGrid does not have). Then it looks for Text, so it's probably setting the Text property of your grid to a DataSet - or trying and failing to do so.
You need to set these to "DataSource", since that's what you want to set on the child grid.
What I do is in 'ParentGrid_InitializeLayout' I set:
Me.UltraControlContainerEditor1.RenderingControl = Me.Grid1 Me.UltraControlContainerEditor1.EditingControl = Me.Grid2 Me.ParentGrid.DisplayLayout.Bands(0).Columns("UnboundColumn").EditorComponent = Me.UltraControlContainerEditor1
and then in ParentGrid_InitializeRow:
but the cell remains blank.
What am I missing?