Hi,
I am trying to figure out a way to do the follow:
I have an UltraGrid with 1 hidden primary key column and 5 visible data columns.
Column 1 and 2 are drop down lists.Column 3 is a dynamic cell.Column 4 is a text fieldColumn 5 is a drop down list.
I have an ultra data source, a DataSet, and DataTable. The DataTable matches the ultraDataSouce:string, string, object, double, string. I can data bind the Columns 1, 2, 4, and 5. But column 3 is the tricky one.
When the user makes a selection on column 2, the cellListSelected event is fired, and its event handler should analyze the selection, and make column 3 a text field, edit field with an edit button, default text with an edit field and edit button, or a drop down list for other selections.
My question is, how does data binding work with such a situation? Is it even possible?
Thanks
I'm not quite sure what you mean by "dynamic cell", but it sounds like you want the cell to handle different data types.
If that's the case, then it sounds like you are on the right track using object as the data type for that column.
Beyond that, it seems like you will need to assign a different Editor/EditorComponent to the cell in column 3 based on the value in Column 2. You can't use just the CellListSelect event for this, since this event will only fire when the user selects an item from the list. This will not account for the case when the grid displays the first time, for example.
So I would recommend using the InitializeRow event, and maybe also AfterCellUpdate.
In InitializeRow, you examine the value of Column 2 and then assign an Editor or EditorComponent to the cell in Column 3. For just a normal text field, you would use an UltraTextEditor. For a text field with a button, you would use a different UltraTextEditor control that has an EditorButton added to it's ButtonsRight collection. For a dropdown list, you have to use UltraComboEditor - or just reset the editor on the cell and use a ValueList.
Mike,
Thanks for the response. And yes, the "dynamic cell" refers to a cell whose data type, or control is different depending on the value selected in drop down list in column 2.
As for the data binding, since the DataTable has myCustomDataClass object, I simply do a look up on the row based on the Primary Key, update the myCustomDataClass object and its value that appears on the grid.
Data binding this way is fine I guess? But should I be creating different data sources for each different control? Say, one for the text field, one for the editor, and one for the combobox/drop down list?
You mentioned using the ComboBox for a DropDownList, but cant i just set the Style to Style.DropDownList?