Hi,
I need to create a XamDataGrid with configurable columns. But the first column on the left should always be displayed on the left and never be moved from there.
- I need to disable the possibility to drag and drop this column.
- I need to prevent some other columns to be draged and droped on the left of this column.
does any body has suggestions?
Thanks
Hello croesusdev,
It sounds like this can be done with column fixing. If you set the first column to be fixed, then it cannot be dragged, and other columns cannot be dragged to the left of it. It will also always be displayed.
Here is some documentation on fixing columns:
About Fixed Fields
Enable Fixed Fields
Fix Fields
You'd want to fix it to the "Near" edge, meaning the left side.
Let me know if you have any other questions about this.
Elizabeth AlbertLocalization Engineer
The functionnality of "fixed columns" available is not what I need. Has it is describe in your documentation :
"The xamDataPresenter™ control and the xamDataGrid™ control allow your end users to fix fields so they are not scrolled out of view."
But, at all time, the user can remove the column from the fixed section. He can drag an drop the column to the dragable section. I dont want the column not to be "scrolled out" I want it to stay on the "near" edge. I want to prevent the user to replace it from its position.
Example, the ExpansionIndicator or RecordSelector are always on the left. The user cannot put them in the midle. That's what I need.
Thanks.
Thanks, I tried your sample. Your right, it works in this particular case.
But if you have more than 1 column in the fixed section, you can switch them together.
And I also need to enable the column fixing fonctionnality has it is shown in the feature browser.
In fact, I need complexe behavior has it is shown in the feature browser.
Just to clarify the requirements:
* One particular column (let's call it A) must always remain the left-most column.* Other columns can be fixed.* Other columns can be dragged, but not to the left of column A.
The Developer Support staff should be able to assist you in implementing this functionality. There is already a case created for you.
That's correct.
Thank you for your help.
Hi Croesusdev,
As far I can see you are looking for a way to freeze specific (the firs column ) and the others can fixed and moved freely without taking the first position. Based on this requirements I have modified Elizabeth’s sample in order hold the first filed always on first position by changing the FieldPositionChanged and FieldPositionChanging:
private void xamDataGrid1_FieldPositionChanged(object sender, Infragistics.Windows.DataPresenter.Events.FieldPositionChangedEventArgs e) { //3 Other columns can be fixed. // ensure that the first filed name will be always on first place if (e.Field.ActualPosition.Column == 0) { xamDataGrid1.FieldLayouts[0].Fields["name"].ActualPosition = new Infragistics.Windows.DataPresenter.FieldPosition(0, 0, 1, 1); xamDataGrid1.FieldLayouts[0].EnsureUniqueFieldPositions(); } } private void xamDataGrid1_FieldPositionChanging(object sender, Infragistics.Windows.DataPresenter.Events.FieldPositionChangingEventArgs e) { //1 One particular column (let's call it A) must always remain the left-most column. //2 Other columns can be fixed. if (e.Field.Name == "name") { e.Cancel = true; } }
private void xamDataGrid1_FieldPositionChanged(object sender, Infragistics.Windows.DataPresenter.Events.FieldPositionChangedEventArgs e)
{
//3 Other columns can be fixed.
// ensure that the first filed name will be always on first place
if (e.Field.ActualPosition.Column == 0)
xamDataGrid1.FieldLayouts[0].Fields["name"].ActualPosition = new Infragistics.Windows.DataPresenter.FieldPosition(0, 0, 1, 1);
xamDataGrid1.FieldLayouts[0].EnsureUniqueFieldPositions();
}
private void xamDataGrid1_FieldPositionChanging(object sender, Infragistics.Windows.DataPresenter.Events.FieldPositionChangingEventArgs e)
//1 One particular column (let's call it A) must always remain the left-most column.
//2 Other columns can be fixed.
if (e.Field.Name == "name")
e.Cancel = true;
Your case number is CAS-60747-Z3FKRB you can also contact me via case if you need any further assistance.
Sincerely,DimiDeveloper Support Engineer, MCPD Infragistics, Inc.www.infragistics.com/support
I have same problem but I am not able to find the "FieldPositionChanged Event" any where.
Will you please help me for that?
Hello sahiljani,
AllowFieldMoving on the XamDataGrid's FieldLayoutSettings must be set to "Yes" before you will see the "FieldPositionChanged" event in the list of events. Here is the XAML code, and I have attached a screenshot.
<igDP:XamDataGrid Name="xamDataGrid1" Width="500" Height="300" BindToSampleData="True" >
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AllowFieldMoving="Yes" />
</igDP:XamDataGrid.FieldLayoutSettings>
</igDP:XamDataGrid>
If it still does not show up in the Properties > Events window, try clicking on the XAML line with "<igDP:XamDataGrid.FieldLayoutSettings>" and check again.