Hello,
I derived my own cell renderer from GridComboBoxCellRenderer.
How can I prevent drop down container from closing down when it looses focus. I found
DropDownContainerCloseDropDown
but I didn''t find
"DropDownContainerClosingDropDown"
Maybe shouldn''t I derive from GridComboBoxCellRenderer?
Regards,
Marek Solarski
AD
Administrator
Syncfusion Team
September 12, 2006 11:46 AM UTC
Hi Marek,
You would have to derive the combobox cell renderer and override these methods.
protected override void OnCloseDropDown(Syncfusion.Windows.Forms.PopupCloseType reason)
{
if(reason != Syncfusion.Windows.Forms.PopupCloseType.Canceled)
base.OnCloseDropDown (reason);
}
protected override bool OnDeactivating()
{
if( !this.IsDroppedDown )
return base.OnDeactivating ();
else
return false;
}
Here is a sample.
http://www.syncfusion.com/Support/user/uploads/ComboBox_ab5624a4.zip
Let me know if this helps.
Best Regards,
Haneef
MS
Marek Solarski
September 13, 2006 09:36 AM UTC
Hi Haneef,
I helped and DropDownContainer does not close down when it looses focus, but only when the Grid gets that focus. If some other control gets focus, DropdownContainer unfortunatelly closes.
Is it possible the DropDownContainer to be shown in some kind of "ShowDialog" way?
More precisely I derived my own ComboBoxCellModel and put some controls on it. GridDataBoundGrid is one of such controls. I have to show confirm message box when user wants to delete a record from grid. DropDownContainer closes down when I click Yes on message box.
Thank you for your help.
Regards,
Marek
AD
Administrator
Syncfusion Team
September 13, 2006 09:59 AM UTC
Hi Mark,
>>>>Is it possible the DropDownContainer to be shown in some kind of "ShowDialog" way?
Yes. Please refer to the browser sample \In depth\DropDownFormAndUserControlSample shows how you can popup a Form from a grid cell.
The DropDownFormAndUserControlSample sample illustrates how to create a custom cell control that places a DropDown Form/UserControl in a cell. The sample actually does it in two ways. It shows you how to display a modal Form using the Form.ShowDialog on a button click within the cell by deriving the GridStaticCellModel / GridStaticCellRenderer. The second way is to derive from the GridDropDownCellModel/ GridDropDownCellRender to drop a UserControl in a manner that handles the focus issues that are involved with pop-ups.The CellControl in both cases displays a CheckedListBox in the dropdown. The CellValue lists the selected options as a comma delimited string. See the Derived Cell Control section in the Grid User’s Guide for more information on custom cell controls.
Here is a modified sample for implementing it.
http://www.syncfusion.com/Support/user/uploads/DropFormComboBox_f92588ef.zip
Let me know if you looking something different.
Thanks,
Haneef
MS
Marek Solarski
September 13, 2006 12:15 PM UTC
Hi Haneef,
Thank you for providing sample.
Your sample is almost exactly what I need. If only I could type in the cell those comma separated values it would be great. I changed GridStaticCellModel to GridComboBoxCellModel and set DropDownStyle to GridDropDownStyle.Editable but it didn''t help.
What did I miss?
Regards,
Mark
AD
Administrator
Syncfusion Team
September 14, 2006 10:34 AM UTC
Hi Marek,
You can add the TexBox control to the grid in the DropDownFormCellRenderer''s constructor and set the location/size of the text in OnActivating/OnDeactivating override method. Please refer the attached sample for more details and let me know if you are looking something different.
http://www.syncfusion.com/Support/user/uploads/DropFormComboBox_b165dc4c.zip
Thanks,
Haneef
MS
Marek Solarski
September 15, 2006 01:08 PM UTC
Hi Haneef,
Thank you for your example, it helped me a lot.
I wonder only if this is possible:
I''d like to have a cell model similar to comboBoxCellModel I mean showing text to the user, but saving Int64 to the dataSource.
I''m not sure which event should I ovveride to switch the displayed text dynamicly. I tried with
protected override void OnPrepareViewStyleInfo(GridPrepareViewStyleInfoEventArgs e)
but setting value to e.Style.Text
(e.Style.Text = "My Text To Display")
makes Grid to save "My Text To Display" to datasource, which can''t be done (datasource holds Int64) - I''d like only the Grid to show this text in the cell.
OnPrepareViewStyleInfo doesn''t seem to be the best event to ovveride, it fires to often.
Can I make this whole working somehow?
Regards,
Marek
AD
Administrator
Syncfusion Team
September 18, 2006 09:00 AM UTC
Hi Marek,
You can handle the DrawCellDisplayText event of the grid and set the e.DisplayText to some new value to want to display. Use the e.Style.CellIdentity.RowIndex and e.Style.CellIdentity.ColIndex to get the row and column of the cell for which the displaytext has to be set. Below is some code snippet.
private void Grid_DrawCellDisplayText(object sender, GridDrawCellDisplayTextEventArgs e)
{
if(e.Style.CellIdentity.RowIndex > 0 && e.Style.CellIdentity.ColIndex == 3)
{
e.DisplayText = "Some Text";
}
}
Regards,
Rajagopal
MS
Marek Solarski
September 20, 2006 11:19 AM UTC
Thank you for your help. It works!