SelectionChanged
Hi,
I am using GridDataBoundGrid ver 2.1.0.9. I am experiencing problems with selection: When i delete a row from underlying DataSource (which is DataTable), even though next row appears selected on screen, my SelectionChanged event handler does not receive any notification. My grid has following settings:
myGrid.AllowDragSelectedCols = true;
myGrid.AllowResizeToFit = false;
myGrid.AllowSelection = GridSelectionFlags.Row;
myGrid.Dock = DockStyle.Fill;
myGrid.EnableAddNew = false;
myGrid.EnableEdit = false;
myGrid.ListBoxSelectionMode = System.Windows.Forms.SelectionMode.One;
myGrid.Location = new System.Drawing.Point(0, 0);
myGrid.Name = "myGrid";
myGrid.OptimizeInsertRemoveCells = true;
myGrid.ShowCurrentCellBorderBehavior = GridShowCurrentCellBorder.GrayWhenLostFocus;
myGrid.Size = new System.Drawing.Size(224, 230);
myGrid.SmartSizeBox = false;
myGrid.SortBehavior = GridSortBehavior.SingleClick;
myGrid.TabIndex = 0;
myGrid.Text = "myGrid";
myGrid.ThemesEnabled = true;
myGrid.UseListChangedEvent = true;
Given below is the code that is used to delete a row:
DataRow dr = myTable_.Rows.Find(deletedObj.Id);
if (dr != null)
{
myTable_.Rows.Remove(dr);
}
I see a similar behaviour when a row is added ...
what am i missing here ?
thanks
SIGN IN To post a reply.
4 Replies
AD
Administrator
Syncfusion Team
June 20, 2005 09:00 AM UTC
You can use this event to catch rows being removed.
this.gridDataBoundGrid1.Binder.RecordsRemoved
AD
Administrator
Syncfusion Team
June 20, 2005 05:32 PM UTC
Right, but the actual problemm i am experiencing, is that when a row is removed and next row is slected, my event handler does not get SelectionChanged or SelectionChanging notification.
thanks
>You can use this event to catch rows being removed.
>
>this.gridDataBoundGrid1.Binder.RecordsRemoved
>
AD
Administrator
Syncfusion Team
June 22, 2005 03:43 AM UTC
After a DataRow is deleted from DataTable, do i have to explicitly referesh the grid ? I checked Selections.GetSelectedRanges right after a row is deleted, it is empty but next row is still shown selected on screen .. Should i just explicity select the next row ? I believe that next row should be selected automatically and my event handler should get called ..
thanks
AD
Administrator
Syncfusion Team
June 22, 2005 07:35 AM UTC
Try this. It worked for me to raise a SelectionChanged event when a row from the datatable was deleted.
Add a handler to the ListChanged event on the DataView associated with the CurrencyManager for your grid.
CurrencyManager cm = grid.BindingContext[grid.DataSource, grid.DataMember] as CurrencyManager;
DataView dv = cm.List as DataView;
dv.ListChanged += new ListChangedEventHandler(dv_ListChanged);
Then in the handler, if a row is being deleted, and the current rowindex needs to be adjusted, adjust it.
private void cm_PositionChanged(object sender, EventArgs e)
{
CurrencyManager cm = sender as CurrencyManager;
int rowIndex = this.gridDataBoundGrid1.Binder.PositionToRowIndex(cm.Position);
if(this.gridDataBoundGrid1.CurrentCell.RowIndex != rowIndex)
{
this.gridDataBoundGrid1.CurrentCell.MoveTo(rowIndex, this.gridDataBoundGrid1.CurrentCell.ColIndex);
GridSelectionChangedEventArgs ea = new GridSelectionChangedEventArgs(GridRangeInfo.Row(rowIndex), null, GridSelectionReason.SelectRange);
this.gridDataBoundGrid1.Model.RaiseSelectionChanged(ea);
}
}
SIGN IN To post a reply.
- 4 Replies
- 1 Participant
-
AD Administrator
- Jun 19, 2005 10:35 PM UTC
- Jun 22, 2005 07:35 AM UTC