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.
Syncfusion Feedback

How can I change the value of a numericupdown column in other rows?

Thread ID:

Created:

Updated:

Platform:

Replies:

13658 May 5,2004 11:52 AM UTC May 6,2004 06:47 AM UTC Windows Forms 7
loading
Tags: GridControl
Alex Brunner
Asked On May 5, 2004 11:52 AM UTC

I have a grid showing DataRows with a DataColumn representing a display position. The display position is represented using a numericupdown cell. I would like to change the display position of all rows when one display position is changed to a proper value. I do the following: private void gridDetailData_CurrentCellChanged(object sender, System.EventArgs e) { if (this.gridDetailData.CurrentCell.ColIndex == this.gridDetailData.SFGridBoundColumns.IndexOf( this.gbcDisplayPosition ) + 1) { this.HandleDisplayPosition( (AppConfiguratorDataSet.DsAppDataViewDefKey.AppDataViewDefRow)this.gridDetailData.GetSelectedRow() ); } } private void HandleDisplayPosition( AppConfiguratorDataSet.DsAppDataViewDefKey.AppDataViewDefRow currentAppDataViewDefRow ) { if (this.gridDetailData.CurrentCell.IsModified) { this.gridDetailData.CurrentCell.ConfirmChanges(); } SortedList rowsSorted = new SortedList(); int index = 1; foreach ( AppConfiguratorDataSet.DsAppDataViewDefKey.AppDataViewDefRow row in this.dsAppDataViewDefKey.AppDataViewDef) { string keySuffix = index.ToString(); if (row == currentAppDataViewDefRow) { keySuffix = "0"; } rowsSorted.Add( row.DisplayPosition.ToString()+"_"+keySuffix.ToString(), row ); index++; } this.gridDetailData.BeginUpdate(); this.gridDetailData.Binder.SuspendBinding(); for (int displayPosition = 1; displayPosition <= rowsSorted.Count; displayPosition++) { AppConfiguratorDataSet.DsAppDataViewDefKey.AppDataViewDefRow row = (AppConfiguratorDataSet.DsAppDataViewDefKey.AppDataViewDefRow)rowsSorted.GetByIndex(displayPosition-1); string key = (string)rowsSorted.GetKey(displayPosition-1); if (row == currentAppDataViewDefRow) { } row.DisplayPosition = displayPosition; string test = string.Empty; } GridCurrentCell cc = this.gridDetailData.CurrentCell; GridStyleInfo style = this.gridDetailData[cc.RowIndex, cc.ColIndex]; if(style.CellType == "NumericUpDown") { this.gridDetailData[cc.RowIndex, cc.ColIndex].Text = cc.Renderer.Control.Text; } this.gridDetailData.Model.ResetVolatileData(); this.gridDetailData.Binder.ResumeBinding(); this.gridDetailData.EndUpdate(); this.gridDetailData.Refresh(); } Regards, Alex

Alex Brunner
Replied On May 5, 2004 11:55 AM UTC

I have forgotten to tell you about the effect I get. The DataRow has the values changes but the cells still show the old values. When saving the values, the values shown by the grid are written to the database. Regards, Alex

Administrator [Syncfusion]
Replied On May 5, 2004 07:06 PM UTC

I don''t really have a clear picture of what you are doing. Is it this line that is not changing the grid value the way you expect it to? this.gridDetailData[cc.RowIndex, cc.ColIndex].Text = cc.Renderer.Control.Text; If so, try using cc.Renderer.ControlText instead of cc.Renderer.Control.Text

Alex Brunner
Replied On May 6, 2004 03:15 AM UTC

Hi Clay I just prepared a sample to show you what I mean. Just try to change the DisplayPosition of the first order by clicking the Up-Button of the NumericUpDown Control. You can see that you have a really suspect behavior. The same DisplayPosition will appear in 2 rows. Now, when you have changed the DisplayPosition of the first row to a value of 7 do the same downwards. Here you can see that everything is numbered as expected. Can you now see, what I tried to describe? Am I doing something wrong or? For me it seems as the NumericUpDown Control is handling the changed value different when increasing than when decreasing the value. Regards, Alex GridNumericUpDownTest_1624.zip

Administrator [Syncfusion]
Replied On May 6, 2004 06:01 AM UTC

If you put this line Console.WriteLine("pos{0} text{1} disp{2}", displayPosition, row.Text, row.DisplayPosition); right ahead of string test = string.Empty; I think you will see why you get 2,2,3,4,... when you change the value in the first row from 1 to 2. So, exactly what to you want to see when you change 1 to 2 in the first row? Test1, 2 Test2, 3 Test3, 4 .... or Test1, 2 Test2, 1 Test3, 3 Test4, 4 ... or something else ??? Are you expecting the rows in the grid to re-arrange themselves somehow? I am not sure this has anything to do with the grid, but with how the SortedList is being used.

Alex Brunner
Replied On May 6, 2004 06:26 AM UTC

Hi Clay The result after the first change should be: Text1 2 Text2 1 Text3 3 Text4 4 It is kind of self re-arranging. If I check with the debugger I can see that in the loop where I set the new DisplayPositions the rows are getting the proper values. Regards, Alex

Administrator [Syncfusion]
Replied On May 6, 2004 06:27 AM UTC

Here is you sample back modified to to make change row 1 to position 2, yield 2,1,3,4,5... GridNumericUpDownTest_7090.zip

Alex Brunner
Replied On May 6, 2004 06:47 AM UTC

Hi Clay It works now! Thank you very much for your great support. Regards, Alex

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

;