I have agrid with an unbound column. The column is of type string, and is defined inthe grid_init method. Then in th einit_row I set an initial value, which works. But then in code I need to change the value, but it does not change. Can anyone tell me why. I am sure it is something obvious.
Please see my code below
//From grid_Initialize method
if (!e.Layout.Bands[0].Columns.Exists("Desc")){ e.Layout.Bands[0].Columns.Add("Desc");}
foreach (var col in e.Layout.Bands[0].Columns){ switch (col.Key) { case @"Desc": col.Header.Caption = "Description"; col.Header.VisiblePosition = 0; col.DataType = Type.GetType("System.String"); col.DefaultCellValue = ""; break;
case PoSModifierItem.UnitCostField: col.Header.Caption = "Price"; col.Format = "c"; col.Header.VisiblePosition = 1; break;
default: col.Hidden = true; break; }}
private void _ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e){ e.Row.Cells["Desc"].Value = e.Row.Cells[PoSModifierItem.DescriptionField].Value;}
private void _cmdApply_Click(object sender, EventArgs e){ foreach (var row in _ultraGrid1.Selected.Rows) { switch ((int)_txtAdjustment.Value) { case 0: row.Cells["Desc"].Value = row.Cells[PoSModifierItem.DescriptionField].Value; break; case 1: row.Cells["Desc"].SetValue(String.Format("{0}{1}", "Light ", row.Cells[PoSModifierItem.DescriptionField].Value), false); break; } }}
Hello,
Could you please clarify what are '_txtAdjustment' and 'PosModifierItem' or either if possible try to attach a small sample project reproducing your issue. I will be happy to take a look at it.
Please do not hesitate to contact us if you need any additional assistance.
Hi Boris,
_txtAdjustment is a comboeditor control that we just select one of two options that have a numeric value as per the switch options.
PoSModifierItem is a class, the UnitPriceField etc are constant string that hold the names of the fields, hence the names of the columns.
The only part of the program that does not appear to work is where we use the row.Cells["Desc"].Value = ....... and the row.Cells["Desc"].SetValue(...) lines. Neither line throws an error, but they also do not set the value in the "Desc" column. The "Desc" column is an unbound column as you can see from the start of the code.
That is a workaround that I can try.
But do you agree this is a bug? As the firing of events seems different between bound and unbound columns.
I believe that this is by design and is not an issue in our control. Could you please take a look at the following link and especially at the last section 'Remarks':
http://help.infragistics.com/NetAdvantage/WinForms/2011.2/CLR2.0/?page=Infragistics2.Win.UltraWinGrid.v11.2~Infragistics.Win.UltraWinGrid.UltraGrid~InitializeRow_EV.html.
I have read that page, several times recently in fact, and it agrees with me, and I quote.
'This event is generated once for each row being displayed or printed and provides an opportunity to perform actions on the row before it is rendered, such as populating an unbound cell or changing a cell's color based on its value."
It should only fire when the row is initially displayed, i.e grid populated, or repopulated. It should not fire because I change the value of a single unbound cell in code.
I have been using UltraWinGrid since it was still called Sheriden Grid. I know when these events are supposed to fire, and changing the value of any cell using code is not supposed to re-initialize the row.
I have implemented the work around to check if this is a re-init as opposed to the initial init, and it solves my immediate problem. However, I should not need to do that, so I suggest you pass this along to the developers, as this is a bug, whether you wish to admit it or not.
Hello townsma,
I have created the following case for you: 'CAS-86303-KXBXXG' and will update you through it.
Hello townsma,This was fixed. Were you able to test your application now with the latest service release for 12.1? Please do not hesitate to contact me if you need any additional assistance.