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.
Unfortunately, activation email could not send to your email. Please try again.

GridGroupingControl

Thread ID:

Created:

Updated:

Platform:

Replies:

32528 Aug 2,2005 03:40 PM Aug 4,2005 10:53 AM Windows Forms 11
loading
Tags: GridControl
Jonathan Jones
Asked On August 2, 2005 03:40 PM

Hi, I am having 2 problems with using a GridGroupingControl: 1) Using the TableDescriptor Columns to create a reduced list of properties to display, I am trying to display a property of type Byte[]. Whenever a cell containing a Byte[] that is not null is displayed, the cell turns red and says "Exception". I use this same method to display the value of other properties with no problems. What am I doing wrong? 2) I have a UITypeEditor that works very well in a PropertyGrid. I''d like to reuse that UITypeEditor for specific cells in the GridGroupingControl. Also, different cells in the same column might have different UITypeEditors. How can I do this? Thanks, - Jon

Administrator [Syncfusion]
Replied On August 2, 2005 06:42 PM

1) The grid does not know how to display a byte[]. If you have 18000 numbers in the array, what do you want to see in the cell? One way you can handle this is to use the TableControlDrawCell event and draw what you want to see.
private void gridGroupingControl1_TableControlDrawCell(object sender, GridTableControlDrawCellEventArgs e)
{
	GridTableCellStyleInfo style = e.Inner.Style as GridTableCellStyleInfo;
	if(style.TableCellIdentity.Column != null && style.TableCellIdentity.Column.MappingName == "byte"
		&& (style.TableCellIdentity.TableCellType == GridTableCellType.AlternateRecordFieldCell ||
		style.TableCellIdentity.TableCellType == GridTableCellType.RecordFieldCell))
	{
		using(Brush b = new SolidBrush(style.BackColor))
		{
			e.Inner.Graphics.FillRectangle(b, e.Inner.Bounds);
			GridStaticCellRenderer.DrawText(e.Inner.Graphics, "bytes", style.GdipFont, e.Inner.Bounds, style, style.TextColor, false);
		}
		e.Inner.Cancel = true;
	}
}
2) You can create a custom cell type that uses your custom control. See the samples of custom celltypes here: \Syncfusion\Essential Studio\3.2.1.0\Windows\Grid.Windows\Samples\CellTypes\CalendarCells \Syncfusion\Essential Studio\3.2.1.0\Windows\Grid.Windows\Samples\CellTypes\SliderCells You can see how to add custom celltypes to a GridGroupingControl in this sample: \Syncfusion\Essential Studio\3.2.1.0\Windows\Grid.Windows\Samples\Grouping\CustomCellTypes Here is a sample with a type editor cell type. \Syncfusion\Essential Studio\3.2.1.0\Windows\Grid.Windows\Samples\Grouping\CustomFieldType

Jonathan Jones
Replied On August 3, 2005 12:17 PM

Hi Clay, Your solution for #1 definitely solved that problem. Thanks! I guess I assumed that the GridGroupingControl would work the same as a PropertyGrid when displaying Byte[] (property grids call ToString on the Byte[] array in question). As for #2, the code you pointed me to had no examples of using a UITypeEditor. However, after some digging, I found that I could do the following: grid.TableModel.CellModels["ConfigData"] = new GridUITypeEditorCellModel(grid.TableModel); If I set the CellType for the column to "ConfigData", it _almost_ works, but I still have the following problems: - The drop-down arrow won''t show up. Instead, the UITypeEditor is displayed as soon as you click on the cell. I''d prefer if it behaved like the property grid (the UITypeEditor is not shown until the drop-down arrow is clicked). - If I click on one cell with a UITypeEditor, and then immediately click on a different cell also with a UITypeEditor, the UITypeEditor from the previous cell is shown. If I click on another cell first before clicking on the new cell, this problem does not happen. Any ideas? Thanks, - Jon

Administrator [Syncfusion]
Replied On August 3, 2005 01:20 PM

If your CellValueType property is set to s object that supports type convserion and has a typeeditor associated with it, the gridgroupingcontrol will use the editor by default. As far as the problems you are seeing, I think if you register a UI celltype for each dropdown column you have, the problem will go away. In addition, the defaultbehavior is to show the buttons. There is a style.ShowButtons property that controls this. Do you have this set? Here is a little sample. http://www.syncfusion.com/Support/user/uploads/GroupingArrayList_f8617266.zip

Jonathan Jones
Replied On August 3, 2005 01:46 PM

Hi Clay, OK, here are some gory details: - I only have one column that needs to use the UITypeEditor. The problem I was having regarding the clicking on different cells was when I clicked on the same column, but in a different row. - The underlying data source for the grid is an array of objects, all a subclass of a common base class. They may be different subclasses, each with a different UITypeEditor for the base class property being shown in the grid. - I already had ShowButtons set to "ShowCurrentCell", but the drop down arrow never appears. Even if I change it to "Show", the arrow button is still missing. Do you have any more suggestions? Thanks, - Jon

Administrator [Syncfusion]
Replied On August 3, 2005 02:03 PM

If you are using derived classes, you might try making your collection list implement ITypeList to make sure you specify the exact types you expect to use (wether a derived type or a base type). Doing this has avioded some problems with derived type and base types. Whether it will affect this problem, I do not know. If you can modify teh sample I uploaded to show the problem, or if you can upload a sample showing the problem, we can try to spot something here. Or, you can submit a Direct Trac support incident with sample if that would be better for you.

Jonathan Jones
Replied On August 3, 2005 03:10 PM

Hi Clay, I''ve updated the solution and attached it. It shows all the problems I mentioned (in the Data column). Unfortunately, I do not know the derived class types until runtime. Plus, the single ArrayList the grid is displaying can contain different derivations of the base class. I have already implemented the array list as an ITypedList of the base class (which I believe you suggested to me some time ago), and that part works well. Please let me know what you find. Thanks! - Jon

Administrator [Syncfusion]
Replied On August 3, 2005 03:24 PM

The sample did not make it. You can try it again(, or you can send it to support@syncfusion.com and mention this tread in the subject line. Also update this thread when you have sent it).

Jonathan Jones
Replied On August 3, 2005 03:59 PM


Administrator [Syncfusion]
Replied On August 3, 2005 06:55 PM

The reason the button is not appearing is because of the DrawCell handler. This prevents the default button from appearing. Biut there are other things not right here. We will have to look into this.

Administrator [Syncfusion]
Replied On August 3, 2005 08:08 PM

Changes have been made in our library to handle the problems. They will be in the upcoming 3.3 release.

Jonathan Jones
Replied On August 4, 2005 10:53 AM

Hi Clay, Thanks for the information. I guess I found something good. Is there a workaround I can code to get around the problem until 3.3 is available? When do you expect 3.3 to be available? Thanks for all your help! - Jon

CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.

;