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.

+/- buttons visible when they shouldn''t be

Thread ID:

Created:

Updated:

Platform:

Replies:

25785 Mar 7,2005 03:58 PM Feb 2,2006 05:07 AM Windows Forms 14
loading
Tags: GridControl
Jan Eugenides
Asked On March 7, 2005 03:58 PM

I''m using a GridDataBound control to display some hierarchical data. This data can be up to 10 levels deep, and is user-configured. My method is to first determine how many datatables I need (1 for each level of the hierarchy), create the datatables, put them into a dataset, and setup the relationships in the dataset. Then I bind the dataset to the grid. This all works fine, except for one slight cosmetic problem, which is nonetheless annoying. My grid is displaying the +/- button on every row of the grid, even if there are no ''child'' items for that row. Clicking the +/- button either does nothing, or makes the button disappear. Since there are no children, the button should not appear at all. I have "ShowTreeLines" set to true, and "IndentHierarchies" also set to true. Am I missing something? Is there a way to make those buttons that do nothing, invisible, as they should be?

Administrator [Syncfusion]
Replied On March 7, 2005 05:07 PM

If you have ShowTreeLines = true, then try handling the CellDrawn event using code like:
    Private Sub gridDataBoundGrid1_CellDrawn(ByVal sender As Object, ByVal e As Syncfusion.Windows.Forms.Grid.GridDrawCellEventArgs)
        If e.ColIndex = 2 Then
            Dim state As GridBoundRecordState = Me.gridDataBoundGrid1.Binder.GetRecordStateAtRowIndex(e.RowIndex)
           If state.HasChildList And state.ChildCount = 0 Then
                Dim count As Integer

                If state.Position >= state.Table.Count Then
                    count = 0 ''add row...
                Else
                    Me.gridDataBoundGrid1.BeginUpdate()
                    Me.gridDataBoundGrid1.Model.SuspendChangeEvents()
                    Me.gridDataBoundGrid1.ExpandAtRowIndex(e.RowIndex)
                    count = state.ChildCount
                    Me.gridDataBoundGrid1.CollapseAtRowIndex(e.RowIndex)
                    Me.gridDataBoundGrid1.Model.ResumeChangeEvents()
                    Me.gridDataBoundGrid1.EndUpdate()
                    Me.gridDataBoundGrid1.Invalidate(e.Bounds)
                End If
            End If
        End If
    End Sub ''gridDataBoundGrid1

Jan Eugenides
Replied On March 7, 2005 05:15 PM

That works, most of the time...it''s better. But if I repeatedly expand and collapse a row, and the underlying row(s) are not expandable themselves, I sometimes get [-] in front of the rows, instead of nothing. Mousing over the [-] makes it disappear, so it''s like a ghost. We''re close though! Can you think of any refinements?

Jan Eugenides
Replied On March 7, 2005 05:29 PM

Hmm.. I replaced the Invalidate(e.bounds) with a simple Invalidate(), and now it works in all cases (I sometimes see a slight flash of the buttons but I can live with it :) ) Thanks for the help.

Administrator [Syncfusion]
Replied On March 7, 2005 05:54 PM

You might try Me.gridDataBoundGrid1.Invalidate(e.Bounds) Me.gridDataBoundGrid1.Update()

Tomas
Replied On November 16, 2005 07:45 AM

I have tried this and and don''t get the code working when I have ShowTreeLines = true at all. When I try the nodes are expanded but showing "minus" instead of nothing for the empty nodes. If I set ShowTreeLines = false and IndentHierarchies = true I get the same phenomena as above. The only way I get this to work is to have both ShowTreeLines and IndentHierarchies set to false, but that doesn''t look to good. Any ideas of how I can get it working with either TreeLines or at least having the rows indented?

Administrator [Syncfusion]
Replied On November 16, 2005 08:49 AM

If you are using 3.3, there is a defect that is causing the buttons to show up when they should not. http://www.syncfusion.com/support/issues/grid/Default.aspx?ToDo=view&questId=872 This has been corrected in our code base, but the correction is not available in a public release yet. If you need something before it becomes available, you can submit a directtrac support incident and request a private build.

Tomas
Replied On January 30, 2006 08:56 AM

I have now upgraded to the latest version of the grid (v4.1.0.50) and I still have problems. The plus/minus signs seem to behave the way they should in this version but the Invalidate(e.Bounds) row seems to update more than just the grid-row. Other parts of the form, especially a toolbar control we use, get misdrawn and almost disappeared and also some button controls. It looks like a grey rectangle gets drawn on top of those controls, or they simply don''t get drawn at all. I had the same problem in the 3.3 version and was hoping that upgrading would remove them. If I remove the invalidate(e.Bounds) row the graphic errors are gone, but of course the plus/minus signs start to misbehave instead. What could be causing those graphical errors? I have ShowTreeLines set to true and IndentHierarchies set to false.

stanleyj [Syncfusion]
Replied On January 30, 2006 10:35 AM

Hi Tomas, The bug #872 in 3.3 is definitely corrected, can you help us reproduce the odd behavior in this sample? Regards, Stanley

Tomas
Replied On January 31, 2006 07:28 AM

I wasn''t able to get the behaviour in your solution, so I extracted a small part of my application instead to show it. The toolbar control, labels and buttons seem to have this drawing error. If you move the window immediately after starting the graphical error disappears, but still if you click the cancel button you will see that the button doesn''t work as it should (doesnt switch to "pushed down" image) All those strange things disappear the same moment as I comment the row: this.gridDataBoundGrid1.Invalidate(e.Bounds); Maybe i''m missing something here, but it feels pretty strange. /Tomas

GraphicalErrorExample.zip

stanleyj [Syncfusion]
Replied On January 31, 2006 08:13 AM

Hi Tomas, Try replacing these existing codes this.gridDataBoundGrid1.EndUpdate(); this.gridDataBoundGrid1.Invalidate(e.Bounds); to this.gridDataBoundGrid1.InvalidateRange(GridRangeInfo.Row(e.RowIndex)); this.gridDataBoundGrid1.EndUpdate(); Best regards, Stanley

Tomas
Replied On January 31, 2006 08:34 AM

Thanks for your quick reply Stanley, but unfortunately that won''t help me either since this makes the original problem to come back which is showing + signs even for the empty nodes. Those + signs are shown until I do a "mouse over" with the pointer and then they disappear (except for the ones that really have nodes underneath of course) Do you have any other ideas what might cause this? /Tomas

stanleyj [Syncfusion]
Replied On February 1, 2006 12:51 AM

Hi Tomas, Sorry for the wrong codes I sent earlier, bit excited to see all controls proper. With the help of your UI design, I was also able to reproduce in the sample that I uploaded earlier. The problem is based on the panels used, now in your sample, a panel is added underneath all the panel and controls. There seems to be no trouble regarding graphical error. Let me know if you still find any problems. Best regards, Stanley

Tomas
Replied On February 2, 2006 02:53 AM

I''m impressed that you got it to work Stanley! I tried the sample you have modified and saw that it really works. but.. (there''s always a but isn''t it) When I try to make this change in my "real" application I still get the same graphical errors. Desperately I created a completely new form without adding any special UI, dragged in a toolbar, a grid and 2 buttons but still the errors are there. Could you try to explain what steps you made to get rid of this? Me adding a panel and put the other controls in that panel doesn''t seem to help. Big thanks for your efforts trying to help! /Tomas

stanleyj [Syncfusion]
Replied On February 2, 2006 05:07 AM

Hi Tomas, I am sure, you will not encounter this problem if a panel is added first all the controls later to it. Without using a panel for the grid there is no trouble, directly adding all controls to the form. Best regards, Stanley

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.

;