AD
Administrator
Syncfusion Team
August 9, 2005 10:47 PM UTC
Try subscribing to the grid.Model.SaveCellInfo event. There, you can test e.RowIndex and e.ColIndex to check what cell you are working with, and you can get the value from e.Style.CellValue so you can do something else with it. You should also set e.handled = true so the grid does not try to save the value itself.
CH
Chuck Hill
August 12, 2005 06:27 PM UTC
Your solution works great for DataSet columns that contain writable data but does not work for underlying DataSet columns that contain only an expression. The GDBG cell enters edit mode, the text in the cell is selectable, but the characters in the cell refuse to change.
I want to edit these columns, intercept the values and write the results to the hidden columns that the underlying DataSet column expressions refer to.
Thanks,
Chuck
AD
Administrator
Syncfusion Team
August 12, 2005 11:43 PM UTC
To avoid the expression columns being editable, try handling the CurrentCellStartEditing event. If grid.CurrentCell.ColIndex points to one of your expression columns in your event handler, then set e.Cancel = true.
CH
Chuck Hill
August 16, 2005 12:24 AM UTC
Actually, I _want_ to edit the cell and intercept the results.
AD
Administrator
Syncfusion Team
August 16, 2005 12:38 AM UTC
You can try the CurrentCellValidating event. To get the new value of the cell, you can use grid.CurrentCell.Renderer.ControlText.
CH
Chuck Hill
August 16, 2005 06:10 PM UTC
I tried that and it doesn''t work. I need to be able to modify the characters in the cell before any of those events are fired.
AD
Administrator
Syncfusion Team
August 16, 2005 06:45 PM UTC
If you want to specify the text that appears in the cell when the cell starts editing, then handle the CurrentCellInitializeControlText event.
private void gridControl1_CurrentCellInitializeControlText(object sender, GridCurrentCellInitializeControlTextEventArgs e)
{
e.ControlText = "ABC";
}
CH
Chuck Hill
August 17, 2005 04:39 PM UTC
Unfortunately, I am not making myself very clear. While the application is running the GDBG column cells enter edit mode, the cell contents are selectable for ctrl-c copy operations, but the characters in the cell cannot be changed. The keystrokes are ignored.
I want the grid cell to be truely editable where I can insert/remove characters within the cell. Because the underlying Table column does not contain data but a computed expression from another Table column, I want to intercept the modified grid cell contents and reverse-compute the value and put it into the source Table column.
The readonly flag is NOT set.
gridColumn.StyleInfo.CellType = "TextBox";
The underlying DataTable column does not contain data but contains an expression. As an example
dv = this.myGrid.Binder.DataSource as DataView;
Where
dv.Table.Columns["area_squm"].Expression == "ISNULL(area,0) * 0.000001".
The hidden Table column "area" contains the value in sq.nm but the value is presented to the user as sq.um
Please let me know if you are still unclear about what is occuring and what I want to do.
Thanks
AD
Administrator
Syncfusion Team
August 17, 2005 06:34 PM UTC
Here is a sample. No matter what you type into Col1, it will store something different (that you can specify) in the DataTable. It does this by handling the grid.Model.DataProviderSaveCellInfo event.
http://www.syncfusion.com/Support/user/uploads/GDBC_Sample_a003f3f.zip
CH
Chuck Hill
August 17, 2005 08:28 PM UTC
Here''s your sample slightly modified so that it simulates my issue.
Form1_6722.zip
AD
Administrator
Syncfusion Team
August 17, 2005 09:18 PM UTC
>>this.gridDataBoundGrid1.CurrentCell.Renderer.ControlValue
You cannot use this is SaveCellInfo. SaveCellInfo can be hit for many reasons, and you cannot assume that Renderer.ControlValue will have any particular value.
Suppose you write the expression as:
this.dt.Rows[e.RowIndex - 1]["Col2"] = XXXXX;
The question is exactly where do you want XXXXXX to come from? And what cell do you type in to decide that you can to set Col2 to be some value?
CH
Chuck Hill
August 18, 2005 05:18 PM UTC
OK. Not only do I want to know how to modify the text within a cell in "Col3", but I want to know how to retrieve the value so I can transform and set it to the cell in "Col2".
AD
Administrator
Syncfusion Team
August 18, 2005 11:00 PM UTC
I think I understand what you want now. Here is a modified sample. If uses an unbound column to offer the flexibility of editing the computed column. http://www.syncfusion.com/Support/user/uploads/GDBC_Sample_2668fdde.zip
CH
Chuck Hill
August 29, 2005 07:01 PM UTC
Thanks! It works in my code.
--Chuck