gibt es irgendeine Möglichkeit mir den XPath zu einem XMLNode generieren zu lassen? Ich habe nämlich 2 XML Dokumente die ich ineinander verschmelzen lasse, d.h. wenn ich 2 XML Dok. mit der gleichen Struktur habe (nur andere Unterknoten) werden die unterschiedlichen Knoten aus Dokument A in Dokument B kopiert. Ungefähr so:
In dem Importvorgang muss ich also die Pfade mitteinander vergleichen. Nur wie bekommen ich diese raus? Ich habs mit dem XPathNavigator probiert. Der hat eine Funktion "ComparePosition" die eigentlich prüft ob zwei Pfadpositionen gleich sind. Diese gibt mir bei dem Vergleich der der beiden Pfade immer false zurück, möglicherweise weil die beiden Nodes aus zwei unterschiedlichen Dokumenten stammen. Deshalb brauche ich den XPath als string.
Hat einer ne Idee? Ich hab leider nichts gefunden.
Ich habe folgendes Problem: Ich habe 2 ListBoxen. In der einen stehen alle Werte drin, die zur Auswahl stehen. In der anderen kommen die rein, die ich bereits selektiert habe. Das ganze passiert per Javascript. Wenn ich die Seite zurück zum Server sende, dann werden diese Werte nicht mit übernommen.
Gibt es einen Trick dafür wie ich die selektierten Werte speichern kann oder kann ich das nur per Postback lösen?
Wenn ich eine Asp.Net Control auf meine Seite hinzufüge wird doch Html Code ausgegben. Diesen brauche ich, da ich Seiteninhalte dynamisch laden will.
Ich wollte einfach nur mal ob wissen ob das möglich ist.
Wenn man so überlegt, ist das jedoch kaum möglich, da dabei auch noch Werte in die ViewState eingetragen werden und noch andere Prozesse ablaufen.
//EDIT
Ich benutze noch .Net 1.1, daher kann ich kein Atlas benutzen. Ich benutze die Postback Komponente von obout.com.
besteht eine Möglichkeit eine Control vorzeitig zu parsen und den Html Code zurückzugeben?
Oder kennt jmd. eine andere möglichkeit Asp.Net Controls per Ajax zu laden?
ich bin grad dabei ein mir eine WebControl zu schreiben. Dabei benutze ich eine Table zur Darstellung. Ich zeig euch mal wie das Objekt aussieht.
public class Menu : WebControls {
public MenuItemCollection Items
{
get {return (MenuItemCollection) ViewState["Items"];}
set {ViewState["Items"] = value;}
}
}
public class MenuItem: WebControl, IPostBackDataHandler {
public MenuItem ParentItem
{
get {return (MenuItem) ViewState["ParentItem"];}
set {ViewState["ParentItem"] = value;}
}
public string Text
{
get {return (string) ViewState["Text"];}
set {ViewState["Text"] = value;}
}
}
Meine Menü Unterelemente werden aus den Items der MenuItemCollection erstellt (Sammlung von MenuItem). Da MenuItem von WebControl erbt hat er auch alle Eigenschaften wie CssClass und die ganzen Styles. Wie kann ich den Anteil von WebControl aus MenuItem in die TableCell kopieren?
Ich will nähmlich nicht alle Eigenschaftswerte von MenuItem nach TableCell zuweisen, das ist ziemlich viel schreibarbeit .
Mein Fehler. Den Fehler(keine Objektinstanz) hat er nur ausgegeben, weil ich in meiner Extention noch einen Dummy Rückgabewert(null) von Propertys zurückgegeben habe.
Zitat
ich verstehe grad dein problem nicht. "Propertys" hat laut definition deines interfaces keinen "set" modifier. daher kannst du "Propertys" natürlich auch keinen wert zuweisen
Propertys ist eine Collection von Property Objekten. Ein einzellnes Property Objekt ist beschreibbar.
Zitat
"cntrl" ist gleichermaßen vom Typ Control als auch vom Typ IExtention, da es per "as" von Control gecastet wurde.
Du kannst also einfach soetwas wie Page.Controls.Add(cntrl as Control); sagen
Dieses gecastete Objekt muss man jedoch noch zu einer Control umwandeln:
Controls.Add( (Control) cntrl);
So funktioniert es. Das mit dem casten kannte ich bissher nicht. Jedoch fallen mir dabei noch weitere Ideen ein 8)
Vielen Dank feadur :D
Wenn ich der Eigenschaft Propertys nun einen Wert zuweise meint er, dass das Objekt nicht instanziert ist. Wie könnte ich der Seite die Control hinzufügen? cntrl ist doch vom Typ IExtention und keine Control.
Ist das überhaupt möglich ein Member einer "unbekannten" Klasse aufzurufen?
nicht leicht das Problem zu zu erklären. Ich versuchs mal:
- ich habe eine ASPX Seite, auf welcher ich per LoadControl() dyn. eine UserControl lade
- jede UserControl Implementiert eine Schnittstelle:
public interface IExtention
{
PropertyCollection Propertys {get ;}
}
Diese binde ich in der Control ein:
public class content_list : System.Web.UI.UserControl, IExtention
{
PropertyCollection _props = new PropertyCollection(new string[] {"pid", "cid"})
public PropertyCollection Propertys
{
get {return _props;}
}
}
- diese Eigenschaft Propertys möchte ich in meiner ASPX Seite aufrufen. Ungefähr so:
bietet .Net eine Klassen mit welcher ich bestimmte Zeichen wie "<" in das zugehörige Sonderzeichen umwandeln kann? Das es wäre ziemlich viel scheibarbeit das ganze selbst zu prüfen.
Dann solltest du dir überlegen, ob du nicht vielleicht eine ASP.Net Table nimmst. Mit der kannst du auf jeden fall ASP Controls in deine Spalten legen.
Vielleicht hilft dir auch das DataGrid weiter.
Ansonsten kannst du es auch so machen:
Literal tableStart = new Literal();
Literal tableEnd = new Literal();
Literal tableRowStart = new Literal();
Literal tableRowEnd = new Literal();
Placeholder MyPlaceholder = new Placeholder();
tableStart.Text = "<table>";
Controls.Add(tableStart);
tableRowStart.Text = "<tr><td>";
tableRowEnd.Text = "</td></tr>";
// 8 Zeilen werden erstellt
for(int i = 0; i ≤ 7; i++)
{
Controls.Add(tableRowStart);
Controls.Add(MyPlaceholder);
Controls.Add(tableRowEnd);
}
Controls.Add(tableEnd);
Somit kannst du eine Html Table in einer Schleife erstellen lassen.
Hoffe das hilft weiter.
Warum fügst du kein Literal ein? Wenn ein Platzhalter kommt, fügst du dein generierten Code in das Literal Feld ein und danach machst du dir ein Placeholder oder was auch immer.
Ungefähr so:
Literal code1 = new Literal();
Literal code2 = new Literal();
Placeholder MyPlaceholder = new Placeholder();
code1.Text = "<table><tr><td>";
code2.Text = "</td></tr></table>";
Controls.Add(code1);
Controls.Add(MyPlaceholder);
Controls.Add(code2);
Danach kannste da einfügen was du willst. Hoffe das hilft weiter.
Wenn ich das Projekt kompiliere dann zeigt er mir folgende Warnung:
Eine Ausnahme ist aufgetreten, während eine Instanz von starfish.StarfishWebForm erstellt wurde. Die Ausnahme war "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.".
Er meint, dass alle Projekte erfolgreich erstellt wurden. Es funktioniert auch im Browser. Nur im Designer werden mir keine Objekte angezeigt.
ich steh grad aufm Schlauch. Ich möchte mir eine neue Page Klasse NewWebForm erstellen. Diese Leite ich von der Page Klasse ab. sieht ungefähr so aus:
public class NewWebForm: System.Web.UI.Page
{
public StarfishWebForm()
{
}
}
Wenn ich der Klasse keinen neuen Konstruktor zuweise, dann geht das ganze. Wenn sie jedoch einen hat, dann kann ich kann ich meiner Seite keinen weiteren WebForms-Objekte hinzufügen.
Meine Frage also. Wie kann ich in meiner neuen Page Klasse den Konstruktor von Page aufrufen. Ich hab an sowas wie base = new Page(); gedacht. Funktioniert aber leider nicht.
Wenn du nur in deiner index.aspx arbeitest, dann muss du die Benutzer wohl oder übel im Programm abfangen. Falls du jedoch eine extra login Seite machst, dann kannst du diese in der web.config angeben und den Rest (index.aspx) nur für registrierte Benutzer freigeben.
Ich denke, dass du mit einer art "CMS" arbeitest. Das gleiche hatte ich mal vor. Jede Control wird aus ner Datenbank gelesen und auf die Seite geladen. Hat alles super funktioniert. Leider ist das Projekt in den Hintergrund geraten.
Ich denke, du solltest "WebControlFactory" in eine extra Assamblie auslagern und diese in eine neue Control einfügen, mit welcher du je nach Benutzeranmeldung deine Controls auf die Seite lädst.
Oder du machst es ganz anders und nimmst die Benutzerverwaltung als fundamentalen Baustein in deine index.aspx.
Eine nicht behandelte Ausnahme des Typs 'System.Net.Sockets.SocketException' ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte
Ich weiß, dass ich noch einen Rückkanal anlegen muss. Kann mir mal einer ein Codebespiel daür senden? In fast allen Beispielen wird das in der .config Datei definiert. Ich muss es jedoch zur Laufzeit machen.
Mmmhh.. Ich hab mal das Internet ein bisschen tiefer durchforstet. Normaler weise tritt dieser Fehler auf, wenn ich die Klasse die ich per Remoting übertragen will nicht serialisiert habe. Sie ist es aber.
Ich hab von tutorials.de noch das Chat-Beispiel kompiliert. Auch dort schmeißt er den gleichen Fehler. Ich denke mal, dass in dem Code auch ein Fehler steckt. Kann es aber auch einfach sein, dass ich für Remoting noch irgend eine Einstellung setzen muss?
ich habe ein Problem mit dem Remoting. Manche Objekte lassen sich einfach nicht übertragen. Folgende Exception kommt wenn ich versuche eine Variable vom Typ Bitmap als Parameter zu übertragen.
Eine nicht behandelte Ausnahme des Typs 'System.Runtime.Serialization.SerializationException' ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Auf den Typ 'System.Runtime.Remoting.ObjRef' kann aufgrund von Sicherheitseinschränkungen nicht zugegriffen werden.
Das kuriose ist, wenn ich den Typ des Parameters als String angebe funktioniert es.
Laut MSDN sollte es funktionieren, da Bitmap serialisierbar ist.
Hier der Code des Projekts (ist zwar VB, aber ich denke es ist erkennar) :
Server
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Dim _channel As New TcpChannel(Int32.Parse(txtPort.Text)) 'channel instanzieren
ChannelServices.RegisterChannel(_channel) 'channel registrieren
RemotingConfiguration.RegisterWellKnownServiceType(GetType(ServerFunctions), _
"test.rem", _
WellKnownObjectMode.SingleCall)
End Sub
Client
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim _channel As New TcpChannel(0)
ChannelServices.RegisterChannel(_channel)
RemotingConfiguration.RegisterWellKnownClientType(GetType(MainFunctions.ITest), _
"tcp://" & txtServer.Text & ":" & txtPort.Text & "/test.rem";)
Dim test As MainFunctions.ITest
test = Activator.GetObject(GetType(MainFunctions.ITest), _
"tcp://" & txtServer.Text & ":" & txtPort.Text & "/test.rem";)
Dim get_local_scrn As New ClassScreenshot.CaptureScreen
test.send_screenshot(get_local_scrn.GetDesktopImage) ' <-- ! FEHLER !
End Sub
Interface
Public Interface ITest
Sub send_screenshot(ByVal bm As Drawing.Bitmap)
End Interface
In dem Serverprojekt liegt auch noch eine Programlogik-Klasse, welche jedoch leer ist.
Der fehler tritt auf, wenn ich auf der Clientseite versuche die Methode send_screenshot aufzurufen.
Woran könnte das liegen? Wie schon oben gesagt, funktioniert es, wenn ich anstatt Bitmap String als Parametertyp nehme.
Laut Fehlermeldung wurde die connection vorzeitig geschlossen.
Kann es sein, dass in Service A irgendwo ein Fehler stattfindet den du abfängst, er darauf die connection killt und er dadurch keinen zugriff mehr hat?.
Kannste mal den Codeschnippsel aus Service A schicken? Ich denke, dass hilft uns weiter.
Kannst du im Access die Datenstruktur sowie die Daten nicht als SQL exportieren? Musste mal gucken obs da irgendwo sowas gibt. Gibts eigentlich in jedem Datenbank Tool.
Danach kannste deine SQL-datei in die Oracle DB bügeln.
Es kann sein, dass manche Befehle nicht gleich heißen. Musst mal gucken obs da sowas wie nen Oracle Kompatiblitätsmodus beim exportieren gibt.