Hallo Taucher,
es hätte wenig mehr Code gegeben, da es sich im Wesentlichen um einen Konfigurationsfehler in der ObjectDataSource gehandelt hat. Wenn ich mir im Nachhinein die Fehlermeldung durchlese, wirds mir auch klar - verstehe nicht, warum ich das nicht gleich gesehen habe.
Der Fehler lag einfach darin, dass der Designer in der DataObjectTypeName-Property der DataSource den Typ System.Guid eingetragen hat, was natürlich Käse ist - hier musste der zugrunde liegende Datentyp (also meine Datenklasse) rein. Danach noch die Delete-Methode ändern, dass sie nicht die ID, sondern den Typ als Parameter akzeptiert, und fertig 😃
Gruß Michbeck1983
Hallo zusammen,
ich habe ein großes Problem mit einer GridView und "angeschlossenem" ObjectDataSource und dem Löschen von Einträgen...
Das ObjectDataSource ist an ein Business-Objekt gebunden, dass folgende Delete-Methode definiert:
public void DeleteArticle(Guid articleGuid) { ... }
Die ObjectDataSource ist nun also an das Business-Objekt gebunden:
<asp:ObjectDataSource ID="ObjectDataSourceArticles" runat="server"
DataObjectTypeName="System.Guid" DeleteMethod="DeleteArticle"
SelectMethod="GetAllArticles"
TypeName="ArticleBo"></asp:ObjectDataSource>
Binde ich nun das GridView an die DataSource, und starte das Löschen, bekomme ich von meiner Business-Methode eine Fehlermeldung, da er eine leere GUID übergibt. Soweit ja auch ok, aber wie schaffe ich es nun das er die GUID des aktuell selektierten Objekts übergibt?
Sobald ich nämlich die DateKeyNames-Eigenschaft des GridView auf den Primärschlüssel ("Id") setze, bekomme ich den Fehler "Eine Eigenschaft namens "Id" für den durch die DataObjectTypeName-Eigenschaft in ObjectDataSource "ObjectDataSourceArticles" angegebenen Typ konnte nicht gefunden werden.". Und ab jetzt beginnt meine Leidensgeschichte, denn egal was ich mache und welche Tipps ich aus der Google-Suche befolge, es klappt einfach nicht.
Für irgendwelche Tipps und Anregungen wäre ich sehr dankbar.
Gruß Michbeck1983
Hallo simethandreas,
ich vermute jetzt mal dass der Typ ThisWorkbook ein von Excel.Workbook abgeleiteter Typ ist. Versuche in diesem Falle doch mal, über ThisWorkbook auf Application zuzugreifen a la
Excel.Range myRange = (Excel.Range)deinWorkbook.ActiveWindow.Selection;
Gruß Michbeck1983
Hallo simethandreas,
dann kann wahrscheinlich nur noch Application NULL sein. Es sollte eigentlich so gehen. Wie greifst du auf deine Excel-Datei zu?
Edit: DaemNice war da schneller
Gruß Michbeck1983
Hallo simethandreas,
verwende doch einfach den Debugger um zu schauen was da genau schiefläuft bzw. welches Objekt wann NULL ist.
Siehe dazu auch [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Ohne deinen Code zu kennen kann man nur spekulieren was da NULL ist.
Gruß Michbeck1983
Hallo simethandreas,
die Fehlermeldung sagt doch schon alles eigentlich. Du musst noch eine Konvertierung vornehmen:
Excel.Range temp_range = Application.Selection as Excel.Range;
// oder
Excel.Range temp_range = (Excel.Range)Application.Selection;
Gruß Michbeck1983
Hallo simethandreas,
das sollte mit der Selection-Property der Application-Klasse funktionieren. Diese gibt ein Range-Objekt zurück, die deine aktuelle Selektion darstellt.
Gruß Michbeck1983
Hallo nameless0815,
das kannst du über die Property "Hidden" der ColumnProperties-Klasse erledigen:
int colIndex = 0; // erste Spalte selektieren
ColumnProperties colprops = myWorksheet.GetColumnProperies(0);
colprops.Hidden = true;
Gruß Michbeck1983
offtopic
Hallo michlG,
dein Programm gefällt mir optisch unglaublich gut. Was für eine Bibliothek hast du denn für die Office-Ribbons genutzt?
Gruß Michbeck1983
Hallo MoodyMammoth,
schau dir doch mal das Publisher/Subscriber-Pattern an. Das dürfte das sein was du suchst.
Gruß Michbeck1983