Hi,
Is there any way to change the field position by code in the field layout?.
The ActualPosition property is read only and changing the Column property has not effect... I guess that the ActualPosition property as priority over the Column property.
Anyone?
Thanks.
Hello sebl,
The FieldCollection object inherits an ObservableCollection<Field>. You can utilize the ObservableCollection's Move() method to accomplish what you are looking for. For example:
grid.FieldLayouts[0].Fields.Move(1, 0);
The two integer parameters are the oldIndex and newIndex, respectively.
For more information, you can see the documentation here.
OK,
This does allow me to change the index of the field, but the property ActualPosition is still the one that seems to be used when displaying the fields.
In the end, all fields remain at their current position.
Hello,
Thank you for your post. I can say that the Fields collection order is not taken in to account for the fields order, that’s why you see this approach is not working. So you have to use ActualPosition property of the FieldClass more information you can find here:
http://help.infragistics.com/NetAdvantage/WPF/2011.2/CLR4.0/?page=InfragisticsWPF4.DataPresenter.v11.2~Infragistics.Windows.DataPresenter.Field~ActualPosition.html
and after calling it you should call EnsureUniqueFieldPositions in order to reposition the fields with the new position:
http://help.infragistics.com/NetAdvantage/WPF/2011.2/CLR4.0/?page=InfragisticsWPF4.DataPresenter.v11.2~Infragistics.Windows.DataPresenter.FieldLayout~EnsureUniqueFieldPositions.html
What you need to do is for example :
this.dataGrid.FieldLayouts[0].Fields[0].ActualPosition = new FieldPosition(1, 0, 0, 1);
this.dataGrid.FieldLayouts[0].EnsureUniqueFieldPositions();
Hope this helps you.
Hi All,
I have some problems while using SaveCustomization & LoadCustomization for XamdataGrid
Scenario:
-1. Dynamically adding Fields to the Grid on ViewerLoad event. Lets say the order is: Col1,Col2,Col3,Col4
-2. User add/removes Fields and do some ordering: Col3,Col2,Col1
-3. Saves the Layout of the Grid, using MemoryStream and SaveCustomization
-4. While loading it back the order which we get is: Col1,Col2,Col3 (see the order of the fields added initially)
Now when I checked the XML file, the order is as point no. 2. I wonder what is the issue here.
Hello Ankit,
Could you please tell us what is the version of NetAdvnatage that you use, so we could be able to reproduce your behavior?
Looking forward for your reply.
The version currently I am using is 11.1
Thank you for your post. I have been looking into it and I and I created a sample project for you following your scenario and everything seems to work ok on my side. If the sample doesn’t satisfies all your needs feel free to modify it, so it reproduces your behavior and send it back to me for further investigation. I tested the project both with the RTM and latest Service Release of version 11.1.
I can say that the firing of the events is normal, because our controls doesn’t fire them if the action is done by code. If so, you can execute the desired code after the action you perform. This is like a pattern for custom controls, which is used to have better performance.
Stefan,
For throwing more light on the requirement, this will explain what I really want:
-The "FieldPositionChanged/Changing" event is fired only when user drag/drop columns in the grid.(As far as the documention in your website is concerned).
-I am hoping that is correct, in that case, I want to achieve all the column's position information even after I have changed the columns by some other means.
For Eg, I changed the collection and bind it accordingly to the grid. In this case, even if the ActualPosition would have changed for each column, but the FieldPositionChanged event would not fire, and thereby I would not get the details to save the layout, in which case, while loading the same layout, the column order would be intermittent.
-Can you suggest me some solution for the above wired scenario. I would be very grateful to you.
Thanks,
Ankit Srivastava
Now, All I want is a property which is fired whenever any fields in the dataGrid changes its position, so that I can fire the FieldPositionChangedEvent and get the XML file with field's position information.
This works fine in the scenario where I an dragging and dropping the columns and then calling SaveCustomization().
But in between the two steps, I am adding one more step which is:
-Managing columns which shows the columns you want to add or remove, after doing that when I am hitting OK, in the back-ground I am clearing the customization with FieldPosition to accomodate the changes.
-And then I hit to SaveCustomization. I guess this is the reason why the XML doesn't gets the attribute's value for ActualPosition(ColSpan,RowSpan,Row,Column)
Is there a way in which we can save the customizations.