Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Birne
Thema: VS2010/Outlook 2007 - Finde Serientermin im Kalender nicht
Am im Forum: Office-Technologien

Hallo,

das Codebeispiel kannte ich schon.

Ich habe festgestellt das ohne das Sortieren der Elemente das gesamte Beispiel nicht funktioniert.

Dies war also die Lösung des Problems.

Vielen Dank ! =)

Thema: VS2010/Outlook 2007 - Finde Serientermin im Kalender nicht
Am im Forum: Office-Technologien

Hallo Community,

obgleich ich die Suche hier bemüht habe, konnte ich keine Lösung für mein Problem finden.

Das Problem ist Folgendes:
Ich versuche zu Prüfen ob an einem bestimmten Tag, in einem bestimmten Kalender ein Serientermin einer Terminserie existiert.

Das tue ich wie folgt:


            DateTime start = new DateTime(serienTermin.Start.Year, serienTermin.Start.Month, serienTermin.Start.Day, 0, 0, 0);
            string filter = "[Subject] = 'Test123' AND [Start] = '" + start.ToString("g") + "'";

            spezifischerKalender.Items.IncludeRecurrences = true;

            Outlook.AppointmentItem serienTerminFund = spezifischerKalender.Items.Find(filter);

"Normale Termine", also keine Serientermine, finde ich mit dieser Methode ohne Probleme.

Wie finde ich die Serientermine in meinem Kalender ?

Vielen Dank im Voraus !
Birne =)

Thema: [gelöst] Buttonclicknach Postback aus Textbox mit Autopostback | Postback isst Button Click Event
Am im Forum: Web-Technologien

Hallo Grumbler85,

Zitat von Grumbler85
Wenn du Serverseitig validieren willst/musst könntest du das ja auch am Ende machen und gleichzeitig alle validieren.

auch dies ist leider nicht möglich. Nach jeder abgeschlossenen Eingabe des Benutzers in eine Textbox wird der aktuelle Zustand gespeichert. Dies soll auch nach jeder Eingabe so sein, dafü entfällt der handelsübliche "Formular speichern" - Button.

Ich habe allerdings eine Möglichkeit gefunden die Buttons zu clicken :D
Ein edit dieses Beitrags hier folgt im späteren Verlauf des Tages :)

Trotzdem Danke für die Hilfe !

Birne

Thema: [gelöst] Buttonclicknach Postback aus Textbox mit Autopostback | Postback isst Button Click Event
Am im Forum: Web-Technologien

Hallo Grumbler85,

Zitat von Grumbler85
Dann benutze doch ein normales Postback im Button Click

das lässt sich leider nicht realisieren. Es handelt sich nicht nur um eine Textbox und somit wird nach jeder Benutzereingabe, die entsprechende Textbox validiert und weiterer serverseitiger Code ausgeführt.

Thema: [gelöst] Buttonclicknach Postback aus Textbox mit Autopostback | Postback isst Button Click Event
Am im Forum: Web-Technologien

Hallo Community,

ich habe ein Problem mit Asynchronen Postbacks aus den Updatepanels bzw. mit nachfolgenden Buttonclick Events.

Das Problem ist folgendes:
Nachdem der Benutzer eine Eingabe in einer Textbox (Autopostback = true) vorgenommen hat und einen Button anklickt, dann wird asynchron ein Postback ausgeführt, welcher dazu führt dass der jeweilige Button letztlich nicht geklickt wurde. Der Asynchrone Postback isst also den Button Click.

Nach füllen der Textbox wird diese Serverseitig validiert und es werden gewisse Berechnungen durchgeführt, diese möchte ich nicht mit Javascript durchführen.

Gibt es eine Möglichkeit diese Thematik in irgendeiner Weise zu lösen ?

Vielen Dank im voraus :)
Birne :)

Thema: Active Directory User Information auslesen | LDAP | ASP.NET | SharePoint2010 | Visual Webpart
Am im Forum: Netzwerktechnologien

Hallo Community,

ich versuche derweil aus einem AD Informationen zu einem User auszulesen (Email Adresse, Vorname und Co.)

Dazu bin ich bisher wie folgt vorgegangen:


            string filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", "DerEntsprechendeUserName");
            string domain = "DieADDomain";

            System.DirectoryServices.DirectoryEntry adRoot = new System.DirectoryServices.DirectoryEntry("LDAP://" + domain, null, null, AuthenticationTypes.Secure);
            System.DirectoryServices.DirectorySearcher searcher = new System.DirectoryServices.DirectorySearcher(adRoot);
            searcher.SearchScope = SearchScope.Subtree;
            searcher.ReferralChasing = ReferralChasingOption.All;
            searcher.Filter = filter;

            SearchResult result = searcher.FindOne();
            System.DirectoryServices.DirectoryEntry directoryEntry = result.GetDirectoryEntry();

             string displayName = directoryEntry.Properties["displayName"][0].ToString();
             string firstName = directoryEntry.Properties["givenName"][0].ToString();
             string lastName = directoryEntry.Properties["sn"][0].ToString();
             string email = directoryEntry.Properties["mail"][0].ToString();

Beim auslesen der Properties bekomme ich allerdings stets die folgende Exception:
Fehler
COMException: Unbekannter Fehler (0x8000500c)

Beim Debuggen ist mir auch aufgefallen das ich für den directoryEntry keine Schema Informationen abrufen, ebenfalls eine Exception vom Typ 'System.Runtime.InteropServices.COMException' geworfen bekomme.

Hat von euch jemand Rat wie ich erfolgreich zu meinem Ziel gelange und die spezifischen Informationen zu einem spefifischen User aus dem Active Directory auslesen kann ?

Vielen Dank schonmal
- Birne -

Thema: [gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts
Am im Forum: Web-Technologien

Hallo felix,

vielen vielen Dank für deine hilfe.
Ich habe, wie du empfohlen hats, die jQuery ready Methode genutzt um zu determinieren ob das DOM aufgebaut ist.

Hintergrund war folgender.
Es existiert eine Sharepoint Website mit nur einem Webpart. Diese Seite, welche nur das Webpart und auch sonst keine Elemente wie Navigation oder ähnliches enthält (modifizierte Masterfile), wird als IFrame in eine andere Webseite eingebunden.

Das stellte mich vor das Problem von CrossiteScripting. ich konnte die Höhe des Contents des IFrames nicht ermitteln.

Um dieses Problem zu lösen, habe ich eine extra Seite der Domain in meinem Webpart geframed und diesem die Höhe meines Webparts (dynamischer Content) via URL zugeteilt. Dieses IFrame konnte dann wiederrum auf der anderen WebSite ausgelesen werden und somit konnte der IFrame via Javascript in der Höhe passgenau definiert werden.

Es handelt sich btw. bereits wie du schon erwähntest um ein Visual Webpart.

Das ursprüngliche Problem betrachte ich als gelöst.

Danke an Felix.

Lösung: jQuery Ready() Function
Die Höhe via OffsetTop vom letzten Element bestimmt.

Thema: [gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts
Am im Forum: Web-Technologien

Danke für die Info.

ich ahbe nun dochj die jQuery lib beugepackt, allerdings habe ich ein Problem bzgl des Caches.

Rufe ich meine Seite, in dem Rahmen also auch den WebPart, das erste mal auf, bekomme ich die Höhe von diesem (durch das Javascript) - Die Seite ist noch nicht im cache.

Nachdem die Seite im Cache ist, bekomme ich stets nur noch die Höhe des sichtbaren Bereichs im Broswer.

Weiss darüber jemand etwas ?
Danke

Thema: [gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts
Am im Forum: Web-Technologien

Vielen Dank !

Ich weiss es ist jetzt nicht mehr State Of the Art aber gibt es auch eine reine Ajax Solution, so dass ich die jQuery lib nicht beipacken muss ? :S

Im Notfall täte es aber auch die jQuery lib, ist nur unschön :S

Thema: [gelöst] ASP.NET Sharepoint2010 Webpart - Execute Javascript nach Aufbau des Webparts
Am im Forum: Web-Technologien

Hallo Community,

ich habe ein problem mit meinem Sharepoint2010 Webpart, geschrieben in ASP.NET.

Ich möchte ein Javascript ausführen, welches ich zuvor im Webpart in dessen Init-Methode definiert habe.
Allerdings nachdem das Webpart komplett konstruiert ist, also Render durchlaufen hat.

Wie erreiche ich dieses Ziel ?
Vielen Dank für eure Hilfe.

Thema: [gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached
Am im Forum: Web-Technologien

Zitat von Abt
Microsoft hat AJAX aus dem aktiven Portfolio genommen, da einfach jQuery deutlich flexibler ist. MVC (aktuell in Version 3) supportet jQuery auch aktiv, sowie Sharepoint.
Wenn Du an einer Neuentwicklung arbeitest ist der Umstieg auf MVC sicherlich eine lohnende Investition. AJAX und "Classic ASP" sind halt einfach in gewisser Hinsicht tot. Das neue Sharepoint basiert auch auf MVC.

Das Projekt lässt sich im aktuellen Status jetzt nicht mehr umschwenken auf MVC.
Ich habe jetzt ne quick&dirty solution gewählt und pushe das Datum als Value von der CodeBehind zurück.

Somit muss das jscript nicht mehr dynamisch erzeugt werden und es kann gecached werden.

Thema: [gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached
Am im Forum: Web-Technologien

Zitat von Abt
AJAX Toolkit ist ein gestorbenes Produkt von Microsoft, das ansich mich Ajax nich viel am Hut hat.
Laut Beispielen kann man dem Calendar mit SelectedDate aber ein Datum vorgeben.

Dann ändert dies aber auch die Textbox and welche der Calendar attached ist.

Ich kann das Toolkit auch nicht neu compilen, weil mir der source code zu meienr hier eingesetzten version fehlt.

Die neue Version läuft auch mit sharepoint nicht mehr.

Thema: [gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached
Am im Forum: Web-Technologien

Zitat von der-schlingel
Hast du schon probiert generell das Caching abzudrehen? (Siehe z.B. hier)

Habe ich probiert, funktioniert im IE leider nicht :I
Zitat
Die andere Frage: Was tut dein Skript dass du es Server seitig generierst und nicht z.B. auf Page-Methods oder ähnliches setzt?

Das javascript gleicht ein defizit des Ajax Toolkit Controls "CalendarExtender" aus. Dieser lässt sich nicht mit einem Datum vorbelegen ohne dass die zugehörige Textbox den Inhalt auch ändert.

Ich hänge mich also in das "OnClienShowing" Event des Calendars und ändere das angezeigte Datum.

Das Datum ist Resultat Serverseitiger Berechnungen, weshalb ich das Script auch nicht in eine Datei auslagern kann.

Thema: [gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached
Am im Forum: Web-Technologien

Hallo Community,

ich habe ein Problem bzgl. Javascript Caching im Browser.

Das Szenario sieht wie folgt aus:

- Ich füge im ServerCode meiner Seite via Page.ClientScript.RegisterClientScriptBlock ein dynamisch erzeugtes Javascript hinzu.

- Leider wird das Javascript im Browser gecached und bisher habe ich keine Möglichkeit gefunden dass Javascript nicht cachen zu lassen oder es aus dem Browsercache zu löschen.

_
Welche Möglichkeiten gibt es, das Caching für dieses eine Script zu verhindern oder aber das Script aus dem Browsercache zu löschen ?

Ich hoffe ihr wisst Rat.
Vielen Dank !

Birne

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Danke !

Das hat funktioniert.

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Hallo Community,

ich bins noch einmal:

Nachdem ich also die Row dynamisch im Event hinzugefügt habe, gibt es ein weiteres Problem.
Mit dem Button ist stets die Umschliessende Row verknüpft, diese benötige ich, um unterer anderem den aktuellen Index zu ermitteln.

Wenn ich auf den Button der neuerstellten Row klicke, ist nicht der Button der neuerstellten Row der Sender, sondern stets der letzte in der Auflistung BEVOR, das Buttonevent ausgeführt wurde.

Gibts eine Möglichkeit das zu eleminieren oder ist das, das Resultat aus dem dem Lifecycle ?

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Super !

Läuft einwandfrei.
Der Fehler in diesem Fall:
Das Buttonpropertie, sowie der Rowaufbau als Solcher.
Ich habe den Cellcontent nun direkt über den Cellindex hinzugefügt und die Buttons einfach Public definiert.

Vielen Dank euch beiden und vorallem Marsstein für eure Mühen !
Birne

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Zitat von MarsStein
Hallo,
Zitat
Den habe ich wieder rausgenommen, weil er keinen effekt hat.
Bist Du sicher?

Ja
Zitat
Zitat
Wenn ich auf einen Button clicke, wird zunächst der PostBack verursacht, also geht die Clickeventanmeldung ohnehin verloren.
Das ist zwar richtig. Aber wenn der PostBack stattfindet, wird ja genau der Handler ausgeführt, der beim vorherigen Request registriert wurde! Deshalb ist es IMHO nötig, den Handler direkt zu registrieren.
Probiere das mal mit Hilfe des Debuggers aus. Dem ist nicht so, hat mich auch erstaunt.
Und wenn das so wäre, dann würde ich die dämlichen Rows auch nicht im INIT erzeugen sondenr im Prerender reinwerfen, nur aus Gründen der Eventanmeldung mache ich das.
Es erzählen zwar immer alle, man soll neue Objekte im INIT erzeugen aber den Sinn sehe ich darin nicht, weil in der MSDN steht, das gewisse Änderungen im PreRender durchgeführt werden.
Und so kennt man es auch von Ajax, selber Cicle.
Stage 4 die Seite ist da, alle sichtbaren Änderungen welcher der Entwickler noch wünscht, werden dort getätigt.
Zitat
Außerdem hast Du offenbar nicht bedacht, daß sich durch die Inserts die Indizes aller nachfolgenden Zeilen verschieben - und die sind noch als Member gespeichert.
Das macht höchstwahrscheinlich auch Probleme.
Argh !!!
Gut, dass du das erwähnst ! Das werde ich gleichmal beheben, ändert aber nichts an den ButtonEvents und den "+" Zeichen :(
Zitat
Zusätzlich empehle ich grundsätzlich, eigene IDs für alle Controls zu vergeben.
Im INIT ?

Edit:
Bitte erstmal nicht weiterrätseln, ich bin auf heisser Spur jetzt !
Ich gebe weiteres hier bekannt.

Edit2:
Hat sich wieder erledigt.
Ich könnte noch vermuten er schiebt mir den "+" Text des ersten Buttons, welcher IMMER erzeugt wird auf die vorherige Textbox Cell, macht aber wenig Sinn.

Edit3:
Index Problem behoben.

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Zitat von MarsStein
Hallo,

jetzt gibt's plötzlich noch eine Klasse newRow - warum? Du verkomplizierst die Sache dadurch ja nur.
Sorry Tipfeghler von mir.
Ist korrigiert.
Zitat

            {
                abgeleiteteRow tRow = new abgeleiteteRow(recievedRow.IsRepeatable, true, recievedRow.ZAObjectTypeId, recievedRow.Name);

                this.rowList.Insert(recievedRow.Index + 1, tRow);
                tblObjects.Rows.AddAt(recievedRow.Index + 1, tRow);
// hier hat die neu erzeugte Row noch keinen Click-Handler!!

            }
Den habe ich wieder rausgenommen, weil er keinen effekt hat.
Wenn ich auf einen Button clicke, wird zunächst der PostBack verursacht, also geht die Clickeventanmeldung ohnehin verloren.
Zitat
Das erklärt zumindest, warum bei Click eines Buttons in einer neuen Zeile das Event nicht ausgelöst wird, aber nicht für die vorhandenen :(
Leider tut es das nicht :S
Zitat
Warum arbeitest Du mit dieser Ableitung von TableRow, was passiert denn da drin sonst noch? Könnte es an der Implementierung dieser Klasse liegen?

Gruß, MarsStein

Die TableRow enthält Felder für zwei Buttons, 5 typisierte Textboxen und ein Label.
Desweiteren Properties für ein paar IDs und Boolsche Variablen.

_____
Zitat von serial
OK,

das sehe ich allerdings problematisch, wenn du es wirklich so machst:
Zitat
EVENTHANDLER
- Neue Row erstellen
- Eventhandler anmelden
- Row der internen Liste hinzufügen
- Row der Table hinzufügen

das solltest du NICHT im Eventhandler machen, dies kann auch zu nebeneffekten führen.

mfg
serial

Ich habe es probiert, und es hat keinen Effekt weil eben erst der Postback kommt.
Die Eventhandler müssen alle im INIT neu erzeugt werden damit sie funktionieren.

OT aus Interesse:
Welche Probeleme können denn dabei auftreten wenn ich es so machen würde und es täte funktionieren ?
Bei Windows Forms lief das auch immer Prima.

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Zitat von serial
Hallo,
also so wie ich das sehe, speicherst du die Rows immernoch in der Session, besser ist es diese jedesmal im Init neu zu erzeugen, wie MarsStein schon gesagt hat.
Ich erzeuge die jedesmal neu, in der Session liegen Rows ja, allerdings nutze ich nur die Informationen dieser Rows.
Zitat von Birne


 // Neue Row erstellen
                abgeleiteteRow newRow = new newRow(row.IsRepeatable, row.IsRepeated, row.ZAObjectTypeId, row.Name);

Jede Row in der Table ist eine neu Erzeugte.
Zitat
Ich würde dir dennoch empfehlen mit einem GridView zu arbeiten, und deine Aktionen mit Commands in diesem zu behandeln.

Wie schon erwähnt, werde ich dies auch tun, allerdings möchte ich dieses Problem gerne lösen, unabhängig davon, ob das es eine elegantere Lösung gibt.

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

OK Danke.

Hier also etwas Code:

Members


        /// <summary>
        /// Enthält zur Erstellung der Tabellenspalte benötige Informationen
        /// </summary>
        public List<abgeleiteteRow> rowList;

S1 - Init
Einmalig- und erstmaliges Füllen der internen Liste


            #region - On Start -
            if (!IsPostBack)
            {
                foreach (TypeDataSet.TypeRow row in TypeDataSet.TableName)
                {
                    abgeleiteteRow tRow = new abgeleiteteRow(row.REPEATABLE, false, row.ID, row.NAME);
                    rowList.Add(tRow);
                    tRow.Index = rowList.IndexOf(tRow);
                }
                Session["rowList"] = rowList;
            }
            #endregion - On Start -

Tabelle befüllen


            foreach (abgeleiteteRow row in rowList)
            {
                // Neue Row erstellen
                abgeleiteteRow = new newRow(row.IsRepeatable, row.IsRepeated, row.ZAObjectTypeId, row.Name);
                newRow.DateFrom = row.DateFrom;
                newRow.DateTo = row.DateTo;
                newRow.Days = row.Days;
                newRow.Hours = row.Hours;
                newRow.Remark = row.Remark;
                newRow.Index = row.Index;

                tblObjects.Rows.AddAt(newRow.Index, newRow);

                // Events anmelden, row refenrezne übergeben
                foreach (abgeleiteteRowButton btn in newRow.Buttons)
                {
                    btn.AbgeleiteteRow = newRow;
                    btn.Click +=new EventHandler(btn_Click);
                }
            }

S3 - Eventhandling


        void btn_Click(object sender, EventArgs e)
        {
            abgeleiteteRowButton btn = sender as abgeleiteteRowButton;
            abgeleiteteRow recievedRow = btn.AbgeleiteteRow;

            // Löschen oder neu anfügen
            if (btn.AddOrRemove)
            {
                abgeleiteteRow tRow = new abgeleiteteRow(recievedRow.IsRepeatable, true, recievedRow.ZAObjectTypeId, recievedRow.Name);

                this.rowList.Insert(recievedRow.Index + 1, tRow);
                tblObjects.Rows.AddAt(recievedRow.Index + 1, tRow);

            }
            else
            {
                this.rowList.RemoveAt(recievedRow.Index);
                tblObjects.Rows.RemoveAt(recievedRow.Index);
            }
            Session["rowList"] = rowList;
        }

Vielen Dank
Birne

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Hallo Marsstein und vielen Dank für deine bisherige Hilfe.

Bevor ich mich an den Alkternativvorschlag heranwage, habe ich variante 1 noch einmal ausprobieret.

Zitat von MarsStein
Zitat
Erzeugen der Rows, durch auslesen der internen Liste
Versuchst Du immer noch, die Rows über diese Liste zu persistieren?
Du solltest die Controls jedenfalls nicht in der Liste halten, eher die benötigten Daten zum Erzeugen der Controls. Die Controls sollten im Init immer wieder mit new erzeugt werden.
Du kannnst dann die einzelnen Zeilen im EventHandler erstellen und hinzufügen, sorge nur dafür daß sie beim nächsten Aufruf im Init miterstellt werden.

Ok, ich lese jetzt meine Interne Liste aus, erstelle aber neue Rows mit den Properties der Rows aus der internen Liste.

Doch nach wie vor treten mir unerklärliche Effekte auf :(

Die Events reagieren nur bei jedem zweitem Click, auf jeden ersten Click fügt sich ein "+" an irgendeine Zelle ein und ein die bisherigen Rowzellen scheinen wild durcheinander zu fliegen.

Aktuelle Implementation sieht wie folgt aus:

INIT
- Einmaliges füllen der internen Liste (!IsPostback).
- Auslesen der internen Liste aber mit new neue Rows erzeugen und der Tabelle hinzufügen
- Events anmelden
- Button referenzen aus sicherheitsgründen übergeben

EVENTHANDLER
- Neue Row erstellen
- Eventhandler anmelden
- Row der internen Liste hinzufügen
- Row der Table hinzufügen

Erster Click:
- Postback
- Click Eventhandler wird aufgerufen
- Zeile wird hinzugefügt an richtiger Stelle


= Alles Schön

Versuch weitere Row anzulegen mit Click auf irgendeinen der Buttons zum adden einer neuen Row:

- Postback
- Clickeventhandler wird NICHT AUFGERUFEN
- '+' erscheint irgendwo in eienr Zelle
- Zellen durcheinandergewürfelt


Erneuter Click
- Postback
- Click Eventhandler wird aufgerufen
- Zeile wird hinzugefügt an richtiger Stelle



usw. usf.
Auch wenn der Alternativvorschlag besteht und ich diesen wohl eher in Betracht ziehen werde, will ich wissen, warum das Ganze bei der bisherigen Variante so fatal verbuggt.
Zitat von MarsStein
Alternativvorschlag:
Das wäre so die "normale" Lösung. Die verlinkte Doku-Seite ist sehr umfangreich, aber auch sehr hilfreich. Wenn Du diesen Weg einschlagen willst, empfehle ich, sie zuerst komplett zu lesen.

Werde ich mich definitiv mit befassen
aber dennoch will ich obiges Problem lösen.


EDIT:

Als Anmerkung vielleicht noch.
Es handelt sich bei mir NICHT um eine Seite, sondern um ein Seperates Usercontrol, der Viewstate ist für dieses Usercontrol aber abgeschalten.
Vielen Dank
Birne

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Hallo Marsstein,

ich habe jetzt deinen rat befolgt, mich mit dem Lifecycle befasst und auch die Rows alle im init erzeugt.
Ich komem trotzdem nicht witer.

Ich habe bereits eine Exkursion in Javascript unternommen - mit mäßigem Erfolg.


Derzeit gehe ich Folgt vor im LifeCycle meines Controls

Init
- Erzeugen der Rows, durch auslesen der internen Liste

Load
- Anmelden der Events

Prerender
- Temporäres anfügen der Row an die Table (geht beim nächsten Postback natürlich verloren)

_____
Problematischerweise sitzt das Eventhandling ja zwischen dem Load und dem PreRender ...
Wenn ich also in meinem Click Event handler eine neue Row meiner Liste hinzufüge, gibt es keine funktionierende Möglichkeit diese auch anzuzeigen.

Ich kann die Rows auch nicht erst im Prerender erzeugen, weil die Eventhandler erst nach einem Button Click und dem damit verbundenen Postback angemeldet werden müssen.

Ich muss meine Rows und Events also im Init erzeugen, anonsten wird der Eventhandler beim Clicken garnicht erst aufgerufen.

Bisher bin ich mit allen meinen Versuchen das Problem in den Griff zu bekommen gescheitert.
Als da wären:

- Postback verursache im ButtonClick event. Gibt im günstigstens Fall nen JScript Error an dieser Stelle.

- Buttons mit OnClientClick Event mit Javascript für Postback versehen. Called die Loadmethode gleich zweimal ...

- Die Row welche der internen Liste hinzugefügt wurde im Preload Event der Table zuweisen:
Funktioniert bis ich die nächste Row hinzufüge. Dann treten seltsame Effekte auf, bei welchen in Vermute es liegt an der Identifikation der Rows. ASP.NET und meine inetrne Liste vertragen sich also nicht :0

Wie löse ich nun das Problem ? :(

Ich habe mich das ganez WE tot gegoogelt. so ziemlich Alles ausprobiert, nichts hilft :S

Ich bitte um Rat.

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Vielen Dank für die Ausführliche und Hilfreiche Antwort und den Link.

Die Tabellenrows lassen sich jetzt wunderbar löschen, auch mit den Werten in der Tabelle wird kein Lotto mehr gespielt

_
Bleibt nur noch Problem 1 über,

die Events reagieren jeweils nur beim zweiten Klick.
Nach jedem ersten Click, verschwinden ALLE zuvor gemachten Eingaben. Beim Click 2 läufts dann.

Da stimm etwas mit dem Lifecycle nicht, nur was ?


Vielen Dank bisher !

Thema: [gelöst] ASP.NET 3.5: Tabelle mit Dynamischen erzeugten Rows - Diverse Probleme
Am im Forum: Web-Technologien

Hallo Community,

ich stehe derzeit vor einem Problem im Rahmen eines ASP.NET 3.5 Controls.
Ich hoffe ihr könnt mir abermals helfen.

_
Problembeschreibung:

Ich füge zur Laufzeit einer Tabelle neue Zeilen hinzu.
Die Rows leiten von der Klasse TableRows ab und implementieren neben Textboxen udn Inputfeldern auch Buttons.

Die Rows werden der Table nicht direkt hinzugefügt, sie werden zunächst in eine interne Liste geworfen.
Diese Liste speicher ich im Sessionobjekt, um die Rows nach einem POST Back nicht zu verlieren.

Die Rows besitzen eine Propertie welche eine List aller Buttons in den Rows zurückgibt.

Ich habe eine Extra Methode geschrieben welche mir die inetrne Liste ausliest und die Rows eben dieser dann zur Tabelle hinzufügt, sowie Button Events registriert, da ja auch diese durch den POST Back verloren gehen.

Es treten im konkreten Fall zwei Probeleme auf:

- Die Buttons reagiseren nur bei jedem zweiten Klick :I

- Beim Löschen von Rows aus der Liste und der Table, kommt die Table völlig durcheinander und verteilt die Werte der Rows random und die entsprechenden Row wird erst nach mehrmaligem Löschen wird gelöscht, sie rutscht zunächst im Index immer weiter nach oben. Row Nr. 87 müsste 87 mal gelöscht werden, bis sie denn auch wirklich nicht mehr in der Tabelle erscheint.

Beispiel Code:


protected void Page_Load(object sender, EventArgs e)
        {
            // Liest das Sessionobjekt aus
            if (Session["rowList"] == null)
            {
                rowList = new List<AbgeleiteteRow>();
            }
            else
            {
                rowList = (List<AbgeleiteteRow>)Session["rowList"];
            }

            // Fügt der Table die neuen Rows hinzu und melden alle Events der Buttons an
            ShowTable();
        }


        protected void ShowTable()
        {
            foreach (AbgeleiteteRow row in rowList)
            {
                foreach (AbgeleiteteRowButton btn in row.Buttons)
                {
                    // Eventhandler anmelden
                    btn.Click += new EventHandler(Click_EventHandler);
                }
                // Rows der Table hinzufügen
               TheTable.Rows.Add(row);
            }
        }

Der Klick Event Handler


        void Click_Eventhandler(object sender, EventArgs e)
        {
            AbgeleiteteRowButton btn = sender as AbgeleiteteRowButton;
            
            // jeder Button enthält eine referenz auf seine Row
            AbgeleiteteRow RowOfButton = btn.AbgeleiteteRow;

            // Löschen oder neu anfügen
            if (btn.AddOrRemove) // Hinzufügen
            {
                // Wir fügen eien neue AbgeleiteteRow hinzu
                AbgeleiteteRow newAbgeleiteteRow = newAbgeleiteteRow(RowOfButton.IsRepeatable, true, RowOfButton.ZAObjectTypeId, RowOfButton.Name);

                // Die Row wird direkt unter dem Vorgängereingefügt
                rowList.Insert(rowList.IndexOf(recievedRow) + 1, newAbgeleiteteRow);
            }
            else // Löschen
            {
               
                // Die Row aus der internene Liste an der richtigen Stelle löschen
                rowList.RemoveAt(rowList.IndexOf(RowOfButton));

                // Die Row aus der Table löschen
                TheTable.Rows.Remove(RowOfButton);
                
            }
            // Die RowListe in das Sessionobjekt werfen
            Session["rowList"] = rowList;

            // DIe Tabelle anzeigen
            ShowTable();
        }

Ich sitze an dieser Stelle fest, weiss nicht, warum die Evenets nur jedme zeitwen Click funktionieren, oder die Rows nicht korrekt gelöscht werden.

Ich hoffe ihr könnt mir helfen
Vielen Dank schonmal !

Birne

Thema: UserControl/CustomControl - übergebenes DataGrid - Properties auslesen, Änderungen determinieren
Am im Forum: GUI: WPF und XAML

Zitat von ErfinderDesRades
Mir scheint, du hast die Funktionsweise des Winform-BindingNavigators falsch verstanden.

Ist in meinem Fall von Irrelevanz an was der BindignNavigator in Winform gebunden wurde. Ob nun an eine BindingSource oder eine DataSource.

Mir geht es darum den BindingNavigator in WPF in einem eigenen Control nachzubilden.
Wichtig in meinem Fall ist, was der Nutzer sieht/kann.
Er soll in meinem Fall durch die Datensätze im DataGrid navigieren können.

___
Ich stimme dir aber zu, der BindingNavigator macht zu Weilen wenig Sinn, soll aber nicht Thema dieses Threads sein.

Thema: UserControl/CustomControl - übergebenes DataGrid - Properties auslesen, Änderungen determinieren
Am im Forum: GUI: WPF und XAML

Hallo Community,

der Titel mag etwas irreführend wirken, deshalb beschreibe ich das Problem im folgenden heir etwas genauer, praxisbezogener.

Wie bekannt, gibt es unter der WPF kein BindingNavigator Tool mehr,
also habe ich versucht, mir ein eigenes UserControl, welches die Funktionalitäten eines BindignNavigators in Bezug auf ein attached DataGrid bereitstellt, zu schreiben.

Dabei habe ich folgendes Versucht.

Ich übergebe via Propertie ein DataGrid an mein BindingNavigator Control.

Die UI des Bindingnavigators ist an dieses Propertie gebunden. In meinem Fall habe ich nun begonnen die ANzahl der Items auszulesen.

Das funktioniert auch prinzipiell, doch Wenn sich die Anzahl der Items im orginalen DataGrid ändern, so reagiert die GUI auf diese Änderung nicht.

Dabei handelt es sich doch nur um eine Referenz die ich übergebe ?
Warum bekommt die BindingNavigator Klasse die Änderung nicht mit ?

Hier die Sourcen.

Die BindingNavigator Klasse, des UserControls.


/// <summary>
    /// Interaction logic for BindingNavigator.xaml
    /// </summary>
    public partial class BindingNavigator : UserControl, INotifyPropertyChanged
    {
        /// <summary>
        /// reference to the dataGrid to work on
        /// </summary>
        private DataGrid dataGrid;

        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// Constructor
        /// </summary>
        public BindingNavigator()
        {
            InitializeComponent();
        }

        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }

        public DataGrid DataGrid
        {
            set 
            {
                this.dataGrid = value;
                OnPropertyChanged("DataGrid");
            }

            get 
            {
                return this.dataGrid;
            }
        }
    }

Die dazugehörige XAML (nicht komplett, jeweils auf meines erachtens wichtige beschränkt)

<UserControl x:Class="UserControls.BindingNavigator"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Width="300" Height="50">
    <Grid x:Name="rootGrid">
            <Label x:Name="lblItemsCount" Content="{Binding Path=DataGrid.Items.Count, Mode=OneWay}"></Label>
    </Grid>
</UserControl>

In einer ganz normalen WPF Anwedung platziere ich also meinen BindingNavigator und setzte die DataGrid propertie:


        private void dataGrid1_Loaded(object sender, RoutedEventArgs e)
        {
            DataGrid dg = sender as DataGrid;
            dg.Items.Add("entry");
            dg.Items.Add("entry");

            this.bindingNavigator1.DataGrid = dg;
        }

        /// <summary>
        /// add addional entrys to test if the binding navigator update the item counter
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.dataGrid1.Items.Add("entry");
            this.dataGrid1.Items.Add("entry");
        }

Könnt ihr mir helfen ?
Vielen dank schon einmal :)

Birne

Thema: Entity Framework in Silverlight Application -> beginSaveChanges -> Error 500
Am im Forum: Web-Technologien

Zitat von schaedld
Die Exception lautet wie exakt? Warten bis die Exception auftritt und nach der InnerException Ausschau halten und schauen ob dort eine Bemerkung ist.

Entschuldige bitte die extrem verspätete Antwort, ich hatte einen lägeren Krankenhausbesuch zu verzeichnen ...

Die Inner Exception ist folgende:
_COMPlusExceptionCode = -532462766

Google bereits befragt, mit mäßigem Erfolg :\

Danke bis hierher
Birne

Thema: Entity Framework in Silverlight Application -> beginSaveChanges -> Error 500
Am im Forum: Web-Technologien

Danke für de Link, doch kannte ich dieses Tutorial schon

Derweil habe ich exakt den Code des Tuts kopiert, bekomme aber dennoch eine Exception. Fehlercode 202.


Ich habe bereits im Server Manager nachgesehen (MS SQL Server 2008 ) ob evtl. Berechtigungen fehlen, aber ich verbinde mich mit dem SA im Connectionstring der App.

Daten aus der DB heranschaufeln und Entitäten dynamisch nachladen funktioniert ohne Probleme.

Der SQL-Profiler(AnjLab SQL Profiler) hilft mir dabei nicht weiter, zumindest weiß ich nicht, welche Informationen von Bedeutung sind für mich :\

Edit:
Auch die Access-Rules im WebDataService sind entsprechend gesetzt.
In diesem Schema:


config.SetEntitySetAccessRule("TaskType", EntitySetRights.All);

Thema: Entity Framework in Silverlight Application -> beginSaveChanges -> Error 500
Am im Forum: Web-Technologien

Hallo allerseits,

ich habe mich diese Woche mit dem Entity Framework vertraut gemacht und eine Simple SilverlightApp geschrieben.

Dabei liest diese App Benutzer aus einer Datenbanktabelle aus und soll auch in der Lage sein, dort neue Benutzer hinzuzufügen.

Ich habe zwar schon häufig gegoogelt, aber nicht ein wirklich umfassendes Tutorial gefunden so dass ich nun immer noch vor dem Problem des Updates der Datenbank stehe.

Folgende Situation beim Anlegen eines neuen Users:


private void UserAnlegen(User usr)
{
       dataContext.AddToUser(usr);
       dataContext.BeginSaveChanges(SaveChangesOptions.Batch, SaveChanges, usr);
}

private void SaveChanges(IAsyncResult result)
{
        svcContext.EndSaveChanges(result);
}

Ich bekomme nach Ausführung eine DataServiceReferenceException.
Laut Debugger Fehlercode 500, also Internal Server Error.

Ich hoffe es kann mir jemand von euch unter die Arme greifen, wie ich die DB erfolgreich updaten kann :\

Und ja, ich habe google und die MSDN schon ausgiebig bemüht X(

Danke schonmal