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. (Last updated on: November 16, 2018).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Not Highlighting Current Row after a Group Has Been Expanded or Header Clicked

Thread ID:

Created:

Updated:

Platform:

Replies:

20569 Oct 21,2004 07:16 AM UTC Dec 12,2004 10:30 AM UTC WinForms 8
loading
Tags: Grouping
Jason Hales
Asked On October 21, 2004 07:16 AM UTC

Hi, I''m using the standard code in PrepareViewStyleInfo to hightlight the current row: // Work out if we''re query the stlye for the current cell bool isCurrentCellStyle = false; if (currentCell != null && currentCell.RowIndex == e.Inner.RowIndex && currentCell.ColIndex == e.Inner.ColIndex) { isCurrentCellStyle = true; } // currentCell.HasCurrentCellAt(e.Inner.RowIndex // Thsi tells us if we''re drawing for the samre row that the current cell is // Highlight the current row with SystemColors.Highlight if (currentCell != null && currentCell.RowIndex > grid.TableModel.Rows.HeaderCount && e.Inner.RowIndex > grid.TableModel.Rows.HeaderCount && e.Inner.ColIndex > grid.TableModel.Cols.HeaderCount && currentCell.HasCurrentCellAt(e.Inner.RowIndex) && ! isCurrentCellStyle) { e.Inner.Style.Interior = highlightRowBrush; e.Inner.Style.TextColor = SystemColors.HighlightText; } This all works fine. But I''ve noticed that collapsing or expanding a group will result in the current row not being highlighted - (FYI currentCell.IsActive is false) I''ve also noticed that if I click a col header (to sort) and that particular col is readonly it also doesn''t highlight the row as expected. Any clues? Thanks in advance Jason

Administrator [Syncfusion]
Replied On October 21, 2004 06:57 PM UTC

Does it work if you check for CurrentElement instead? private void gridGroupingControl1_TableControlPrepareViewStyleInfo(object sender, GridTableControlPrepareViewStyleInfoEventArgs e) { GridTableCellStyleInfo style = (GridTableCellStyleInfo) e.Inner.Style; if (style.TableCellIdentity.TableCellType == GridTableCellType.RecordFieldCell || style.TableCellIdentity.TableCellType == GridTableCellType.AlternateRecordFieldCell || style.TableCellIdentity.TableCellType == GridTableCellType.AddNewRecordFieldCell) { Record r = style.TableCellIdentity.DisplayElement.ParentRecord; if (r.IsCurrent) { GridControlBase grid = e.TableControl; if (!grid.CurrentCell.HasCurrentCellAt(e.Inner.RowIndex, e.Inner.ColIndex)) { e.Inner.Style.BackColor = SystemColors.Highlight; e.Inner.Style.TextColor = SystemColors.HighlightText; } } } } Stefan

Brian Wright
Replied On October 22, 2004 04:51 PM UTC

No that does not appear to work. I am running into the same problem. I can use the PrepareViewStyleInfo event to highlight the row if is the current selection. However, whenever I click a group header it does not get highlighted. The row is still the current however because if I hit the down arrow then it moves to the next row and properly highlights it. Any ideas? >Does it work if you check for CurrentElement instead? > > > private void gridGroupingControl1_TableControlPrepareViewStyleInfo(object sender, GridTableControlPrepareViewStyleInfoEventArgs e) > { > GridTableCellStyleInfo style = (GridTableCellStyleInfo) e.Inner.Style; > if (style.TableCellIdentity.TableCellType == GridTableCellType.RecordFieldCell > || style.TableCellIdentity.TableCellType == GridTableCellType.AlternateRecordFieldCell > || style.TableCellIdentity.TableCellType == GridTableCellType.AddNewRecordFieldCell) > { > Record r = style.TableCellIdentity.DisplayElement.ParentRecord; > if (r.IsCurrent) > { > GridControlBase grid = e.TableControl; > if (!grid.CurrentCell.HasCurrentCellAt(e.Inner.RowIndex, e.Inner.ColIndex)) > { > e.Inner.Style.BackColor = SystemColors.Highlight; > e.Inner.Style.TextColor = SystemColors.HighlightText; > } > } > } > } > > > >Stefan >

Administrator [Syncfusion]
Replied On October 24, 2004 11:52 AM UTC

Hi Brian, when you press the arrow key, the current cell uses some cached row and column properties as base for the navigation. That does not mean that there is an active current cell. Can you prepare a small sample (or modify our GroupCustomers example) to demonstrate the problem you have? Thanks, Stefan

Jason Hales
Replied On October 25, 2004 08:13 AM UTC

I''ve attached a sample c# app that I use to try out the features of the grid. Whenyou run the app, place a check against the following check boxes: "Apply Grouping" "Highlight Row" Now if you select any reocrd and then click any header you''ll find that the previous seleted record if not highlighted. As mention, pressing arrow key does highlight it - you can even click a header in which the current record doesn''t exist and again only get the row hightlighted after pressing an arrow key. Hope this helps. TIA Jason Grouping Grid Sample_6784.zip

Administrator [Syncfusion]
Replied On October 25, 2004 09:17 PM UTC

Here is your sample back. I modified it to use the technique shown in the sample in this thread http://www.syncfusion.com/Support/Forums/message.aspx?MessageID=20768 to highlight the current row. Grouping Grid Sample_6784_5443.zip

Administrator [Syncfusion]
Replied On December 10, 2004 09:38 AM UTC

This all works great, thanks. One little problem though. 1. Highlight a row, eg row 2 2. Make some changes to the underlying data 3. Call syncGrid.TableControl.EndUpdate(true); 4. Click on a different row - the previous row (2) is still highlighted. 5. Click another row and row 2 is unhighlighted as expected I have hacked it to work by calling syncGrid.TableControl.CurrentCell.MoveLeft(); syncGrid.TableControl.CurrentCell.MoveRight(); before Endupdate - but is there a better way Thanks again Jason >Here is your sample back. I modified it to use the technique shown in the sample in this thread http://www.syncfusion.com/Support/Forums/message.aspx?MessageID=20768 to highlight the current row. > >Grouping Grid Sample_6784_5443.zip > >

Administrator [Syncfusion]
Replied On December 10, 2004 06:07 PM UTC

Hi Jason, I am not exactly sure about the steps to reproduce in your sample. Do you have a test method in that sample that performs the steps below? Anyway, since you mention the problem is with changing data from outside, I guess the problem is that the ListChanged event resets your current record. Try handling the SourceListListChanged event. There you can specify e.ShouldResetCurrentRecord = false. Then the current record will not be reset. Stefan

Administrator [Syncfusion]
Replied On December 12, 2004 10:30 AM UTC

Jason, one more thing. This may be related. In the 3.0 samples check out the CustomCellTypes example. This sample has code for expanding records or groups without moving the current record. Stefan

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.

Warning Icon 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.Close Icon

;