[Gelöst] Fehler mit Fixierung beim Spalten ein-/ausblenden

19. Mai 2014 12:26

Hi,

Ich habe eine Liste erstellt in der die ersten 10 Spalten mein Key und Infofelder sind. Es folgt eine Fixierung auf das letzte Infofeld und darauf folgen die Array-Variablen-Felder die zur Laufzeit befüllt werden.

Ich habe dazu die Möglichkeit eingebaut die ersten 10 Spalten, durch anhaken, ein- und auszublenden anstatt über die Seitenanpassung. Nun gibt es 2 Probleme:

1. wenn ich Spalten ausblende bleibt die Fixierung nicht auf dem letzten Info-Feld, wie ich es in FreezeColumnID definiert habe, sondern bleibt immer auf der gleichen Spaltennr. Bsp. die Fixierung ist zu beginn nach Spalte 10 nun blende ich 2 Spalten aus und es ist weiterhin nach Spalte 10 anstatt nach Spalte 8. Gibt es hier eine Möglichkeit das zu verändern?

2. wenn ich nun wieder Spalten dazu haben möchte hängt sich der RTC ohne Fehlermeldung auf. Nehme ich die Fixierung raus funktioniert alles ohne Probleme :?:

gibt es generell die Möglichkeit die Fixierung zu programmieren? Vllt. hilft das :-(
Oder gibt es eine Möglichkeit über Seite anpassen, dass die Spalten die hinzugefügt werden nicht immer ganz unten angefügt werden und man mühselig über den Button "nach oben" den Finger wund klickt, sondern in der Reihenfolge wie in der Page definiert?

Danke schonmal für euere hilfe.

Gruß
t000bi
Zuletzt geändert von t000bi am 21. Mai 2014 14:16, insgesamt 1-mal geändert.

Re: Fehler mit Fixierung beim Spalten ein-/ausblenden

21. Mai 2014 10:49

So wie es aussieht kann man keine bewegliche Spalte vor einer Fixierung einbinden:
Hier das Fehlerprotokoll:

Code:
Type: System.InvalidOperationException
Message: Die Spalte kann nicht hinzugefügt werden, da sie beweglich ist und vor einer fixierten Spalte steht.
StackTrace:
     bei System.Windows.Forms.DataGridView.CorrectColumnFrozenState(DataGridViewColumn dataGridViewColumn, Int32 anticipatedColumnIndex)
     bei System.Windows.Forms.DataGridView.OnInsertingColumn(Int32 columnIndexInserted, DataGridViewColumn dataGridViewColumn, Point& newCurrentCell)
     bei System.Windows.Forms.DataGridViewColumnCollection.Insert(Int32 columnIndex, DataGridViewColumn dataGridViewColumn)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.BusinessGridView.BusinessGridViewDataColumnsCollection.Insert(Int32 index, DataGridViewColumn item)
     bei Microsoft.Dynamics.Framework.UI.WinForms.RepeaterControlAdapter.InsertDataGridColumnsCore(BusinessGridView gridToAddTo, Int32 index, Boolean checkRowCountOnColumnAdded, Int32 controlsInserted, LogicalControlAdapter controlAdapter)
     bei Microsoft.Dynamics.Framework.UI.WinForms.RepeaterControlAdapter.InsertDataGridColumn(BusinessGridView gridToAddTo, Int32 index, LogicalControl control, Boolean checkRowCountOnColumnAdded)
     bei Microsoft.Dynamics.Framework.UI.WinForms.RepeaterControlAdapter.ColumnControls_ControlAdded(Object sender, ControlAddedEventArgs e)
     bei Microsoft.Dynamics.Framework.UI.MonitorLogicalControlChildren.RaiseControlAdded(LogicalControlCollection collection, LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.MonitorLogicalControlChildren.Children_ControlAdded(Object sender, ControlAddedEventArgs e, Boolean addEventHandlers)
     bei Microsoft.Dynamics.Framework.UI.MonitorLogicalControlChildren.Control_PropertyChanged(Object sender, PropertyChangedEventArgs e)
     bei System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
     bei Microsoft.Dynamics.Framework.UI.LogicalControl.OnPropertyChanged(PropertyChangedEventArgs e)
     bei Microsoft.Dynamics.Framework.UI.LogicalControl.RaisePropertyChangedRecursive(String propertyName)
     bei Microsoft.Dynamics.Framework.UI.LogicalControl.CommonDominatingValueHelper.RaisePropertyChanged(LogicalControl logicalControl, String propertyName, Boolean raiseOnChildren, Boolean newValue)
     bei Microsoft.Dynamics.Framework.UI.LogicalControl.CommonDominatingValueHelper.SetValue(LogicalControl logicalControl, Boolean newValue)
     bei Microsoft.Dynamics.Framework.UI.LogicalControl.set_Visible(Boolean value)
     bei Microsoft.Dynamics.Nav.Client.UIPatterns.ExpressionPattern.Evaluate(LogicalControl fieldTarget)
     bei Microsoft.Dynamics.Nav.Client.UIPatterns.VisibleExpressionPattern.Evaluate(LogicalControl fieldTarget)
     bei Microsoft.Dynamics.Nav.Client.UIPatterns.VisibleExpressionPattern.DataLoaded(Object sender, EventArgs e)
     bei System.EventHandler.Invoke(Object sender, EventArgs e)
     bei Microsoft.Dynamics.Framework.UI.BindingManager.OnDataLoaded(EventArgs e)
     bei Microsoft.Dynamics.Nav.Client.DataBinder.NavBindingManager.OnDataLoaded(EventArgs e)
     bei Microsoft.Dynamics.Framework.UI.BindingManager.ChangeStateToFilled()
     bei Microsoft.Dynamics.Framework.UI.BindingManager.DoFill(DataReaderFillOptions fillOptions)
     bei Microsoft.Dynamics.Framework.UI.BindingManager.Fill(BindingManagerFillOptions options)
     bei Microsoft.Dynamics.Nav.Client.Actions.NavRefreshAction.RefillForm(NavBindingManager targetBindingManager, Bookmark refreshBookmark)
     bei Microsoft.Dynamics.Nav.Client.Actions.NavRefreshAction.DoRefillForm(NavBindingManager targetBindingManager, Bookmark refreshBookmark)
     bei Microsoft.Dynamics.Nav.Client.Actions.NavRefreshAction.InvokeCore(Boolean async, LogicalControl logicalControl, Object state, UISession uiSession)
     bei Microsoft.Dynamics.Framework.UI.LogicalAction.InvokeCoreWithErrorHandling(Boolean async, LogicalControl logicalControl, Object state, UISession uiSession)
     bei Microsoft.Dynamics.Framework.UI.LogicalAction.DoInvoke(LogicalControl logicalControl, UISession uiSession)
     bei Microsoft.Dynamics.Framework.UI.ActionControl.Invoke()
     bei Microsoft.Dynamics.Framework.UI.Windows.ActionsHelper.<>c__DisplayClassa.<ModalitySafeInvoke>b__8()
     bei Microsoft.Dynamics.Framework.UI.Windows.ActionsHelper.ModalitySafe(Action action)
     bei Microsoft.Dynamics.Framework.UI.Windows.ActionsHelper.ModalitySafeInvoke(ActionControl actionControl)
     bei Microsoft.Dynamics.Framework.UI.Windows.ActionControlAdapterBase.DefaultInvokeAction(LogicalControlAdapter adapter, ActionControl actionControl)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInActionControl(ActionControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKey(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInChildren(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKey(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInChildren(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKey(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInChildren(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKey(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInChildren(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyAll(LogicalControl control)
     bei Microsoft.Dynamics.Framework.UI.WinForms.ProcessShortcutHelper.ProcessShortcutKeyInLogicalControlsFromCurrentControl(Boolean execute)
     bei Microsoft.Dynamics.Framework.UI.WinForms.LogicalFormAdapter.ProcessKey(Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.LogicalFormAdapter.BusinessForm_PreviewProcessCmdKey(Object sender, HandledPreviewKeyDownEventArgs e)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.BusinessForm.OnPreviewProcessCmdKey(HandledPreviewKeyDownEventArgs e)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.BusinessForm.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.DirectionalLayoutPanel.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.DirectionalLayoutPanel.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.DirectionalLayoutPanel.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.DirectionalLayoutPanel.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.DirectionalLayoutPanel.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.BusinessGridView.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.ViewBase.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.TextBoxBase.ProcessCmdKey(Message& msg, Keys keyData)
     bei Microsoft.Dynamics.Framework.UI.WinForms.Controls.EllipsisTextBox.ProcessCmdKey(Message& msg, Keys keyData)
     bei System.Windows.Forms.Control.PreProcessMessage(Message& msg)
     bei System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
     bei System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
Source: System.Windows.Forms
HResult: -2146233079


Kann man die Fixierung per code ein- und auschalten?

Re: Fehler mit Fixierung beim Spalten ein-/ausblenden

21. Mai 2014 14:15

Habe eine andere Lösung gefunden.

Statt die Spalten direkt in der selben Page wieder ein-/auszublenden, übergebe ich nach Druck eines Buttons die Spaltenwerte (ob ein-oder ausgeblendet) an die selbe aber neue geöffnete Page und schließe danach die erste Page. Ist etwas kompliziert, aber so werden die Spalten und die Fixierung korrekt und ohne Fehler angezeigt.