Bei DataBind System.InvalidCastException() ausgelöst

Andreas Eugster

Hallo zusammen

Ich habe folgendes Problem:
Ich möchte eine neue TextBox, auf einem zusätzlichen Folder den ich erstelle, erstellen.

Beim ausführen der Codezeile DataBind.SetBind() löst er mir die folgende exception aus:
(Im Objekt selber)
Das Objekt des Typs SwissAddonFramework.UI.Components.ItemMemory kann nicht in Typ SwissAddonFramework.UI.Components.ItemSAP umgewandelt werden.

im Catch()
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


SwissAddonFramework.UI.Components.TextEdit edtBemer = SwissAddonFramework.UI.Components.TextEdit.CreateNew("Bemer");
SwissAddonFramework.UI.Components.UserDatasource udsBemer = SwissAddonFramework.UI.Components.UserDatasource.CreateNew("U_XXZBem");
udsBemer.DataSourceType = UserDatasource.DataType.ShortText;
udsBemer.Length = 250;
edtBemer.DataBind.SetBind(true, "U_XXZBem", m_strTable);
form.AddItem(edtBemer);
form.Update();


Wenn ich das Feld direkt nach dem erstellen hinzufüge dann kommt die Fehlermeldung, auf der Zeile Bind, dass die Datasource bereits geladen ist.

Kann mir einer den Grund dafür nennen(U_XXZBem existiert in der tabelle), warum da ein Fehler kommt???

Gruss
Andreas Eugster

Andreas Eugster

Hat noch niemand etwas herausgefunden? Es wäre sehr wichtig.

Marco Schweighauser

Hallo Andreas,

probier mal folgendes


SwissAddonFramework.UI.Components.TextEdit edtBemer = SwissAddonFramework.UI.Components.TextEdit.CreateNew("Bemer");

SwissAddonFramework.UI.Components.UserDatasource udsBemer = SwissAddonFramework.UI.Components.UserDatasource.CreateNew("U_XXZBem");
udsBemer.DataSourceType = UserDatasource.DataType.ShortText;
udsBemer.Length = 250;
form.AddUserDatasource(udsBemer);

edtBemer.DataBind = usdBemer;
edtBemer.DataBind.DataBound = true;

form.AddItem(edtBemer);
form.Update();


Gruss

Marco

Andreas Eugster

Bei mir kann usdBemer nicht edtBemer.DataBind zugewiesen werden, da keine konvertieren von DataBind in UserDatasource möglich ist.

Hast du evt. etwas vergessen?

Gruss
Andreas

Marco Schweighauser

Stimmt, die Userdatasource muss noch einem DataBind Objekt übergeben werden. Dort kann auch der Tablename etc. gesetzt werden.


SwissAddonFramework.UI.Components.TextEdit edtBemer = SwissAddonFramework.UI.Components.TextEdit.CreateNew("Bemer");

SwissAddonFramework.UI.Components.UserDatasource udsBemer = SwissAddonFramework.UI.Components.UserDatasource.CreateNew("U_XXZBem");
udsBemer.DataSourceType = UserDatasource.DataType.ShortText;
udsBemer.Length = 250;
form.AddUserDatasource(udsBemer);

SwissAddonFramework.UI.Components.DataBind dtbBemer = SwissAddonFramework.UI.Components.DataBind.CreateNew("U_XXZBem");
dtbBemer.DataBound = true;
dtbBemer.TableName = m_strTable;

edtBemer.DataBind = dtbBemer;

form.AddItem(edtBemer);
form.Update();

Andreas Eugster

Danke es funktioniert jetzt.

Ist jedoch sehr langwiirig.. Gibt es den einen bug an SetBind?

Wird dieser in absehbarer Zeit behoben?

Gruss

Andreas

Marco Schweighauser

Hallo Andreas,

du must dem

edtBemer.DataBind


zuerst ein DataBind Objekt (nicht verwechseln mit der UserDataSource) zuweisen. Sonst bekommst du eine Exception.

Z.B.:

edtBemer.DataBind = SwissAddonFramework.UI.Components.DataBind.CreateNew("U_XXZBem");
edtBemer.DataBind.SetBind(true, "U_XXZBem", m_strTable);
0

Comments

0 comments

Please sign in to leave a comment.

Didn't find what you were looking for?

New post