Laden...

Forenbeiträge von mvollmer Ingesamt 61 Beiträge

11.02.2014 - 17:40 Uhr

Hallo C4RL0,

ich nutze schon seit Jahren Logitech Mäuse. Ob für Zuhause als Gaming Maus oder fürs Büro.

Hast du die Logitech Performance Mouse MX schon bekommen? Mich würde interessieren wie sie so ist, da sie ja schon eine ungewöhnliche Form hat 😃

06.02.2014 - 18:07 Uhr

Ich kann dir die Logitech M510 empfehlen!

Diese entspricht deinen Anforderungen ist super. Habe sie selbst schon seit einem halben Jahr und sie läuft immer noch wie geschmiert 😉

Ich nutze sie auch auf der Arbeit. Sieht nicht so abgespaced aus, schnurlos und funktioniert auf allen Oberflächen.

17.07.2013 - 08:18 Uhr

Vielleicht ganz simpel. Mal die STRG Taste beim Klicken des Links gedrückt?

15.07.2013 - 09:04 Uhr

Hallo,

nicht "kann" oder "möchte"."darf" wäre wohl der richtige Begriff 😃 Zumindest beim größteil der Forumuser.

Rechtsberatung

29.09.2011 - 14:46 Uhr

Ich habe zum Testen eine Codezeile eingefügt, die eine Exception auslöst.

Wenn ich nun als Debug oder als Release mit F5 Debuggen möchte und die Codezeile aufgerufen wird erhalte ich die weiße Seite.

Ich habe grade herausgefunden warum keine Meldung angezeigt wurde.

In der App.xaml.cs Datei gibt es die Methode die unbehandelte Exceptions abfängt.

Sie war wiefolgt:

 private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // Falls die Anwendung außerhalb des Debuggers ausgeführt wird, melden Sie die Ausnahme mithilfe eines ChildWindow-Steuerelements.
            if (!System.Diagnostics.Debugger.IsAttached)
            {
                // HINWEIS: So kann die Anwendung weiterhin ausgeführt werden, nachdem eine Ausnahme ausgelöst, aber nicht behandelt wurde. 
                // Bei Produktionsanwendungen sollte diese Fehlerbehandlung durch eine Anwendung ersetzt werden, die den Fehler der Website meldet und die Anwendung beendet.
                e.Handled = true;
                ErrorWindow.CreateNew(e.ExceptionObject);
            }
        }

Ich habe nun die If abfrage rausgenommen.

Anscheinend wurde früher der Debugger an keinen Prozess angehangen. Evnt durch eine andere Konfiguration oder halt weils ne ultra langsame kiste war, die auch so öfters Fehlermeldungen ausspruckte die durch die schlechte Performence des PCs hervorgerufen wurden.

29.09.2011 - 13:20 Uhr

SP1 installiert...

In den IE Optionen habe ich bei "Skriptdebuggin deaktievieren" den Haken rausgemacht.
Und bei "Skriptfehler anzeigen" rein.

jedoch leider alles kein Erfolg 😭

29.09.2011 - 11:48 Uhr

Es handelt sich um MS Visual Studio Web Developer 2010 Express. Was man sich evnt aus meiner Profilangabe ableiten kann.

Edit: Der Hinweis mit dem SP kann ziemlich naheliegen, dieses habe ich noch nicht installiert. Ich hole es grade nach. Mal schauen ob es dannach läuft.

28.09.2011 - 10:33 Uhr

Guten Tag,

ich habe auf meinem alten PC an einer Silverlight Buisness Application gearbeitet. Dort hat alles funktioniert.

Seitdem ich das Projekt auf einem neuen System am Entwickeln bin, habe ich aber Probleme beim Debugging.

Wenn im Programm ein Fehler auftritt wird normalerweise das Exception Fenster im Browser mit der Fehlermeldung angezeigt. Nun kommt aber nur noch eine KOMPLETT weiße Seite, der restliche Teil der Seite verschwindet auch, anstatt der Fehlermeldung.

Das Problem tritt im IE sowie im FF auf aber jeweils NUR, wenn ich auf die default.aspx Datei im Web Projekt auf Browserauswahl den jenigen Browser ausgewählt habe.

Habe ich z.B. den IE ausgewählt als Standard Browser so werden die Fehlermeldungen im FF angezeigt. Wähle ich den FF als Standard aus, werden die Fehlermeldungen im IE angezeigt.

Weiß jemand wo das Problem liegt?

EDIT:

Altes System Windows XP 32Bit
Neues: Windows 7 64 Bit

Edit2 : Starten als Administrator hat ebenfalls nicht funktioniert.
Updates wurden auch alle installiert und die Silverlight Tools nochmal reinstalliert.
Kein Erfolg 😭

09.09.2011 - 08:50 Uhr

In der Debug Ausgabe sind auch keine Binding fehler enthalten.

Ich habe mal beim Image das ImageFailed Event abonniert.

Nun erscheint eine AG_E_NETWORK_ERROR Fehlermeldung. Diese steht dafür, dass das Bild nicht geladen werden konnte.

Edit: Problem gelöst. Es war der Pfad -_-

Es musste wiefolgt heißen:

new Uri("../Images/Yes.png", UriKind.Relative)

Danke an alle die geholfen haben 😉

08.09.2011 - 17:09 Uhr

Beides versucht, leider kein Erfolg.

Ich werde mich morgen nochmal melden, muss weg. Danke schonmal an alle 😃

08.09.2011 - 16:58 Uhr

Den Pfad alleine habe ich auch schon versucht.
Nur den Uri auch.

Und wenn ich mich recht entsinne erwartet das Image in der CodeBehind Datei ein BitmapImage.

Hallo mvollmer,

es liegt am Uri. Schau dir das nochmal genauer an, bzw. wenns Build-Action Resource hat kannst du es auch einfacher mit dem "relativen Pfad" angeben.

Beim UriKind Relative zu nehmen ebenfalls.

Die Bilder liegen im Projekt im Images Ordner.
Als Buildvorgang ist Resource ausgewählt.

08.09.2011 - 16:51 Uhr

Ja der Converter klappt. Anscheinend mag er das BitmapImage nicht bzw das was er zurückgegeben bekommt.

Also am Value liegts nicht, das funktioniert einwandfrei. Der Converter läuft ja durch und gibt auch das BitmapImage zurück..

Das IsChecked kommt von einer anderen Klasse die in der ItemsSource einer Listbox verwendet wird.

08.09.2011 - 16:45 Uhr

Dieser wird im Converter zurückgegeben.

08.09.2011 - 16:41 Uhr

Hallo,

ich habe ein Problem mit binden einer Image Source.

Mein Code ist folgender:


<Grid.Resources>
            <Converter:InRoleImgConverter x:Name="InRoleImgConverter" />
            <DataTemplate x:Key="RoleView">
                <StackPanel Orientation="Horizontal" x:Name="spRoles">
                    <CheckBox x:Name="cbIsInRole" IsChecked="{Binding IsChecked,Mode=TwoWay}" />
// Dieses Image wird nicht angezeigt.
                    <Image Source="{Binding IsChecked,Converter={StaticResource InRoleImgConverter}}">
                        <Image.Effect>
                            <DropShadowEffect Color="Green"></DropShadowEffect>
                        </Image.Effect>
                    </Image>

 // Dieses Image wird angezeigt.
                    <Image Source="/MyProject;component/Images/Yes.png">
                        <Image.Effect>
                            <DropShadowEffect Color="Green"></DropShadowEffect>
                        </Image.Effect>
                    </Image>
                    <TextBlock x:Name="txtRoleName" Text="{Binding RoleName}" Margin="15,0,0,0" VerticalAlignment="Center" />
                </StackPanel>
            </DataTemplate>
</Grid.Resources>


public class InRoleImgConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            BitmapImage myBitmapImage;
            
            if ((Boolean)value)
                myBitmapImage = new BitmapImage(new Uri("/MyProject;components/Images/Yes.png", UriKind.RelativeOrAbsolute));
            else
                myBitmapImage = new BitmapImage(new Uri("/MyProject;components/Images/No.png", UriKind.RelativeOrAbsolute));

            return myBitmapImage;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Wo liegt meine fehler?

08.09.2011 - 09:54 Uhr

EDIT 2: Da dies ein falscher weg ist, wie ich es versucht habe, werde ich nun diesem Ratschlag folgen 😃

Hallo zusammen,

ich stehe grade vor folgendem Problem.

Ich habe hier eine Silverlight Buisiness Application. Ich nutzte die aspnet Datenbank für die Users und Roles.

Nun möchte ich eine Ansicht erstellen aus zwei Listboxen.

In der linken Listbox stehen die User. In der rechten alle Rollen.

Die Rechte Listbox hat ein DataTemplate für die Items. Dies sieht wiefolgt aus:


<DataTemplate x:Key="RoleView">
    <StackPanel Orientation="Horizontal" x:Name="spRoles">
         <CheckBox x:Name="cbIsInRole" IsChecked="False" />
        <TextBlock x:Name="txtRoleName" Text="{Binding RoleName}" Margin="15,0,0,0" VerticalAlignment="Center" />
    </StackPanel>
</DataTemplate>

Nun möchte bei der Auswahl des Users in der linken Listbox, über die aspnet_UsersInRoles Tabelle in der zweiten Listbox alle Checkboxen auf IsEnabled stellen, wenn ein Eintrag in UsersInRoles gefunden wurde.

Das Problem ist nun zu wissen, welche Checkbox die Richtige ist.

Ich habe das ganze mit einer Rekursiven Funktion probiert:

Hier habe ich erstmals versucht anhand des TextBox.Text die richtige Textbox zu finden.


private void UsersInRolesDS_LoadedData(object sender, LoadedDataEventArgs e)
        {
            if (UsersInRolesDS.DataView.Count > 1)
            {
                foreach (aspnet_UsersInRoles item in UsersInRolesDS.Data)
                {

                    TextBlock tb = this.GetChildByName(this, "txtRoleName") as TextBlock;
                    if (tb != null)
                    {
                        MessageBox.Show(item.aspnet_Roles.RoleName);
                    }
                }
            }
        }

        private FrameworkElement GetChildByName(FrameworkElement element, string text)
        {
            int ChildrenCount = VisualTreeHelper.GetChildrenCount(element);

            for (int i = 0; i < ChildrenCount ; i++)
            {
                FrameworkElement parent = VisualTreeHelper.GetChild(element, i) as FrameworkElement;
                if (parent != null)
                {

                    if (parent is TextBlock && (parent as TextBlock).Text == text)
                    {
                        return parent;
                    }
                    return GetChildByName(parent, text);
                }
            }
            return null;
        }

Dieser Code erzeugt einen Stackoverflow, da er als Children immer ein Grid findet.
EDIT: In der Rekursiven Funktion waren ein paar fehler, die ich nun gefunden haben.

Hat jemand eine Idee? Vielleicht einen ganz anderen Lösungsweg?

Crosspost

06.09.2011 - 10:08 Uhr

Hallo michlG,

leider hat das keine Änderung verursacht und das Problem besteht immer noch.

Es sieht so aus als ob der Textblock Style übernommen wird, nur der Text nicht.

EDIT: FEHLER GEFUNDEN!

Es muss einfach nur

<TextBlock Text="{Binding }" Style="{StaticResource HeaderStyle}"></TextBlock>

sein -_-

Danke für deine Mühe 😉

06.09.2011 - 09:54 Uhr

Huhu,

ich stehe grade vor einem Problem. Ich würde gerne ein TabControl erstellen und ein DataTemplate auf den Header des TabItems setzten.

Mein Versuch ist folgender:

In den Grid Ressourcen:

 
<Style x:Name="TabHeaderStyle" TargetType="sdk:TabItem">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Header}" Style="{StaticResource HeaderStyle}"></TextBlock>
            </DataTemplate>
       </Setter.Value>
   </Setter>
</Style>


<sdk:TabControl x:Name="TabControl" Grid.Row="0" Grid.Column="0" DataContext="{Binding }">
    <sdk:TabItem x:Name="MainTab" Header="Hauptfunktionen" IsSelected="True" Style="{StaticResource TabHeaderStyle}">
        <StackPanel>
            <!--Some Content --> 
        </StackPanel>
   </sdk:TabItem>
   <!-- Weitere sdK:TabItem -->
   <!-- Weitere sdK:TabItem -->
   <!-- Weitere sdK:TabItem -->
   <!-- Weitere sdK:TabItem -->
</sdk:TabControl>


Das Problem ist jetzt, das im Tab der Header Text nicht angezeigt wird. Wenn ich allerdings oben im DataTemplate beim Text Binding den ElementName=MainTab hinzufüge funktioniert es, doch das trifft dann natürlich nicht auf die anderen TabItems zu.

Ich habe gelesen, das der DataContext gesetzt sein muss, damit das Binding funktioniert. Leider klappt es so nicht.

Könnte mir jemand einen Tipp geben 😉 ?

Danke schonmal

23.08.2011 - 13:03 Uhr

Guten Tag,

ich hab mir das ganze mit dem Isolated Storage nochmal angeschaut.

Das Speichern der Datein funktioniert einwandfrei. Nur soll der Anwender ohne Probleme auf die gespeicherten Datein zugreifen. Und dafür ist der Isolated Storage nicht gedacht.

Gibt es weitere möglichkeiten? Sonst würde ich an meiner "Alle Datein zippen und dann runterladen"-Methode weitermachen 😉

EDIT: So habs geschafft 😉

private void ZippingFiles()
        {
            byte[] buffer;
            SaveFileDialog zipDialog = new SaveFileDialog()
            {
                DefaultExt = "zip",
                Filter = "zip Files (*.zip)|*.zip|All files (*.*)|*.*",
                FilterIndex = 1
            };

            //Show SaveFileDialog
            if ((Boolean)zipDialog.ShowDialog())
            {
                // Savefiledialog File
                //using (Stream ZipFile = )
                {
                    // A memory stream to write to
                    using (Stream zippedMemoryStream = zipDialog.OpenFile())
                    {

                        // A ZIP stream
                        using (ZipOutputStream zipOutputStream = new ZipOutputStream(zippedMemoryStream))
                        {
                            // Highest compression rating
                            zipOutputStream.SetLevel(9);

                            Stream stream = new MemoryStream();
                            using (StreamWriter writer = new StreamWriter(stream))
                            {
                                writer.Write(CreateHTML());
                                writer.Flush();

                                // Write the HTML data to the ZIP file   
                                ZipEntry Entry = new ZipEntry("index.html");
                                buffer = new byte[stream.Length];
                                stream.Read(buffer, 0, buffer.Length);
                                stream.Close();
                                zipOutputStream.PutNextEntry(Entry);
                                zipOutputStream.Write(buffer, 0, buffer.Length);
                            }


                            //// Write the css file to the ZIP File
                            StreamResourceInfo cssContentInfo = Application.GetResourceStream(new Uri("style.css", UriKind.Relative));
                            zipOutputStream.PutNextEntry(new ZipEntry("style.css"));
                            buffer = new byte[cssContentInfo.Stream.Length];
                            cssContentInfo.Stream.Read(buffer, 0, buffer.Length);
                            zipOutputStream.Write(buffer, 0, buffer.Length);

                            // Finish the ZIP file
                            zipOutputStream.Finish();

                            zipOutputStream.Close();
                        }
                    }
                }
            }
        }
23.08.2011 - 12:07 Uhr

Hallo JAck30lena,

danke für den Hinweis. Ich hatte den Part bereits im Using stehen, doch dann war der stream leer. Grade fiel mir ein das ich noch writer.Flush() benötige damit die Daten auch dan den Stream weitergeleitet werden.

Das ganze klappt also nun.

*10 min später*

so habs jetzt so weit zum laufen bekommen, das eine Datei erstellt wird. Diese ist nur leider beschädigt :>

private void ZippingFiles()
        {
            byte[] buffer;
            SaveFileDialog zipDialog = new SaveFileDialog()
            {
                DefaultExt = "zip",
                Filter = "zip Files (*.zip)|*.zip|All files (*.*)|*.*",
                FilterIndex = 1
            };

            //Show SaveFileDialog
            if ((Boolean)zipDialog.ShowDialog())
            {
                // Savefiledialog File
                using (Stream ZipFile = zipDialog.OpenFile())
                {
                    // A memory stream to write to
                    using (MemoryStream zippedMemoryStream = new MemoryStream())
                    {

                        // A ZIP stream
                        using (ZipOutputStream zipOutputStream = new ZipOutputStream(zippedMemoryStream))
                        {
                            // Highest compression rating
                            zipOutputStream.SetLevel(9);


                            Stream stream = new MemoryStream();
                            using (StreamWriter writer = new StreamWriter(stream))
                            {
                                writer.Write(CreateHTML());
                                writer.Flush();

                                // Write the HTML data to the ZIP file   
                                zipOutputStream.PutNextEntry(new ZipEntry("index.html"));
                                buffer = new byte[stream.Length];
                                stream.Read(buffer, 0, buffer.Length);
                                zipOutputStream.Write(buffer, 0, buffer.Length);
                                zipOutputStream.CloseEntry();
                            }


                            // Write the css file to the ZIP File
                            StreamResourceInfo cssContentInfo = Application.GetResourceStream(new Uri("style.css", UriKind.Relative));
                            zipOutputStream.PutNextEntry(new ZipEntry("style.css"));
                            buffer = new byte[cssContentInfo.Stream.Length];
                            cssContentInfo.Stream.Read(buffer, 0, buffer.Length);
                            zipOutputStream.Write(buffer, 0, buffer.Length);
                            zipOutputStream.CloseEntry();

                            // Finish the ZIP file
                            zipOutputStream.Finish();

                            buffer = new byte[zippedMemoryStream.Length];
                            zippedMemoryStream.Read(buffer, 0, buffer.Length);
                            ZipFile.Write(buffer, 0, buffer.Length);
                        }
                    }
                }
            }
        }

Zudem hoffe ich, das du dir schon bewusst bist, das du bei Silverlight bereits am Client bist und nichts mehr herunterladen tust, weil du ja bereits alles am Client machst?

Ja das weiß ich. Aber guter Hinweis, so könnte ich die Datei ja auch einfach im Isolated Storage speichern oder nicht? Dann könnte ich mir das packen eigentlich sparen 😄

Zu lernzwecken würd ich dieses Problem aber trotzdem gelöst haben.

23.08.2011 - 11:22 Uhr

Guten Tag,

ich würde gerne eine html und eine css Datei zu einer zip Datei packen und diese dann per SaveFileDialog zum herunterladen anbieten.
Das ganze in einem Silverlight Projekt.

Ich habe mich schlau gemacht und bin auf SharpZipLib gestoßen.

Und das ist mein Versucht des ganzen:



private void ZippingFiles()
        {

            // A memory stream to write to
            using (MemoryStream zippedMemoryStream = new MemoryStream())
            {
                //Show SaveFileDialog
                if ((Boolean)sfd.ShowDialog())
                {
                    // Savefiledialog File
                    using (Stream ZipFile = sfd.OpenFile())
                    {
                        // A ZIP stream
                        using (ZipOutputStream zipOutputStream = new ZipOutputStream(zippedMemoryStream))
                        {
                            // Highest compression rating
                            zipOutputStream.SetLevel(9);

                            byte[] buffer;

                            Stream stream = new MemoryStream();
                            using (StreamWriter writer = new StreamWriter(stream))
                            {
                                writer.Write(CreateHTML());
                            }

                            // Write the HTML data to the ZIP file   
                            zipOutputStream.PutNextEntry(new ZipEntry("index.html"));
                            buffer = new byte[stream.Length];
                            stream.Read(buffer, 0, buffer.Length);
                            zipOutputStream.Write(buffer, 0, buffer.Length);
                            stream.Close();

                            // Write the css file to the ZIP File
                            StreamResourceInfo cssContentInfo = Application.GetResourceStream(new Uri("style.css", UriKind.Relative));
                            zipOutputStream.PutNextEntry(new ZipEntry("style.css"));
                            buffer = new byte[cssContentInfo.Stream.Length];
                            cssContentInfo.Stream.Read(buffer, 0, buffer.Length);
                            zipOutputStream.Write(buffer, 0, buffer.Length);

                            // Finish the ZIP file
                            zipOutputStream.Finish();
                            byte[] buf = new byte[zipOutputStream.Length];
                            zipOutputStream.Write(buf, 0, buf.Length);

                            ZipFile.Read(buf, 0, buf.Length);
                        }
                    }
                }
            }
        }

Ich erhalte bei

buffer = new byte[stream.Length];

folgenden Fehler: > Fehlermeldung:

Auf einen geschlossenen Stream kann nicht zugegriffen werden.

Und in dieser Zeile

 ZipFile.Read(buf, 0, buf.Length);

folgenden Fehler > Fehlermeldung:

No open entry.

Könntet ihr mir ein bisschen auf die Sprünge helfen? Bei den Streams hab ich noch nicht so ganz durchgeblickt 😦

18.08.2011 - 08:11 Uhr

Danke für die Antworten.

Ich habs nun so gemacht, das ich meine eigene Konvertierung entfernt habe und folgendes in den HTML Header geschrieben habe


 <meta http-equiv="Content-Style-Type" content="text/css" charset="utf-8" />

Früher hab ich es halt so gelernt, das zu Barrierefreiem HTML dazu gehört alle Sonderzeichen umzuwandeln 😃

17.08.2011 - 16:51 Uhr

Guten Tag,

ich möchte mir in Silverlight eine HTML Page generieren lassen, dies tue ich mit dem XMLWriter.

Ich konvertiere die Umlaute und Sonderzeichen in html Code ala &szlig; um.

Das Problem ist der XMLWriter konvertiert das & in &amp; und dann ergibt es &amp;szlig;

Kann ich mit XMLWriterSettings bestimmen, welche Zeichen er nicht konvertieren soll? Gibt es eine andere möglichkeit?

22.06.2011 - 16:27 Uhr

Problem gelöst, es fehlt die Callback Methode!

15.06.2011 - 09:09 Uhr

Hallo Diräkt,

danke für den Hinweis mit AnjLab, ein nützliches Tool!

Habe das ganze nun mal Analysiert...

Und die SQL Abfrage kommt durch und liefert auch die richtigen Ergebnisse.

Nur werden die nicht im _AccContext(DomainContext) übernommen.

Wüßte jemand wodran das liegen könnte?

EDIT: Die SQL Abfrage wird aber erst nachdem die OnNavigateTo() Methode aufgerufen wurde abgeschickt.

10.06.2011 - 11:53 Uhr

Hallo Diräkt,

das mit

WebContext.Current.User.Roles.First()

ist mir bewußt.
Wenns klappen würde, würde ich alle Rollen überprüfen.

Ich habe mal das ganze in einer porcedure ausgelagert und diese in einem Button OnClick Event aufgerufen. Dort bekahm ich dann Ergebnisse. Bevor die Seite aber nicht initialisiert wurde klappt es nicht.

Wodran könnte das liegen?

10.06.2011 - 08:39 Uhr

verwendetes Datenbanksystem: MS SQL

Guten Tag zusammen,

ich habe die aspnet_Roles Tabelle aus der Standard asp.net Datenbank um einige smallint Spalten ergänzt, die bestimmte Rechte darstellen sollen.
Beispiel: readMessage 0/1
So nun möchte ich bei einer Silverlight Seite eine Abfrage einbauen die Überprüft, ob die Rolle in die der User ist, auch genügend Rechte besitzt.

Ich habe folgendes Versucht:

AccountContext _AccContext = new AccountContext();

        /// <summary>
        /// Initialisierung des Contextes
        /// </summary>
        /// 
        public ListPage()
        {
            if (WebContext.Current.Authentication.User.Identity.IsAuthenticated)
            {
                _AccContext.Load(_AccContext.GetAspnet_RolesQuery().Where(e => e.ReadMessages == 1).
                    Where(e => e.RoleName == WebContext.Current.User.Roles.First()));
                if (_AccContext.aspnet_Roles.Count >= 1)
                {
                    InitializeComponent();
                }
                else
                {
                    ChildWindow cwPermissionDeny = new ChildWindow();
                    cwPermissionDeny.Title = "Zugriff verweigert!";
                    cwPermissionDeny.Content = "Sie haben keinen Zugriff auf diese Seite!";
                    cwPermissionDeny.Show();
                }
            }
        }

_AccContext bleibt aber weiterhin leer, obwohl ein Datensatz vorhanden sein müsste.

Kann man das ganze anders Lösen? Oder weiß jemand wo das Problem liegt?

08.06.2011 - 11:57 Uhr

Genau so hab ich mir das auch gedacht 😃
Also einfach nur drauf achten das eine Tabelle nicht mehrfach in unterschiedlichen Contexten vorkommt.
Wenn ich mein Projekt grade ansehe muss ich leider festellen, das ich einmal eine Tabelle doppelt drin habe 😦

Naja aber mit dem Wissen, wie man den Fehlern aus dem Weg gehen kann sollte es dann auch fuktionieren.

Ich danke euch für eure Antworten.

PS: Hier noch eine Verlinkung zu SoC, welches auch mein Grund der Frage war.

06.06.2011 - 15:10 Uhr

Hallo zusammen,

mir stellt sich grade die Frage ob es sinnvoller/sauberer Programmiert ist, wenn man einen Context(=DataSource) für die gesamte Datenbank hat oder für jeden Bereich einen eigenen Context erstellt.

z.Z. hab ich es so gemacht, das für jeden Bereich ein Context vorhanden ist.
D.h. Für Accounts, Kunden, etc. jeweils einen Context der zusammenhängende Tabellen zusammenfasst.

Das Problem was nun auftritt, wenn man in einer View auf mehrere Context zugreifen möchte, ist das sie untereinander verschiedene Datensätze beinhalten.

Wenn man einen einzelnen Context hätte würde dieses Problem nicht auftreten.

Wie seht ihr das oder wie habt ihr es bis jetzt umgesetzt?

30.05.2011 - 10:03 Uhr

Hallo David W,

danke es lag wirklich an einem Defekten Datensatz 😃

Damit das Bild dann auch richtig angezeigt wurde musste man das BitmapImage zurückgeben.

30.05.2011 - 09:34 Uhr

verwendetes Datenbanksystem: MS SQL

Guten Tag,

ich habe in einer SQL Datenbank in einem varbinary(Max) Feld Bilder gespeichert.
Diese möchte in in Silverlight nun anzeigen.

Ich habe eine Image Komponente auf meiner Form und das Databinding gemacht.
Dazu habe ich nun einen Converter hinzugefügt der die Binären Daten aus der Datenbank in ein Image Convertertiert.


public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Image result = null;
            if (value != null)
            {
                BitmapImage bmp = new BitmapImage();
                bmp.SetSource(new MemoryStream(value as byte[]));
                Image img = new Image();
                img.Source = bmp;
                result = img;
            }
            return result;
        }


Beim aufruf bekomm ich folgende Exception:> Fehlermeldung:

Schwerwiegender Fehler (Ausnahme von HRESULT: 0x8000FFFF (E_UNEXPECTED))

Was mach ich falsch?

26.05.2011 - 15:13 Uhr

verwendetes Datenbanksystem: MS SQL

Hallo zusammen,

ich habe hier eine Silverlight Geschäftsanwendung und möchte dort nun einen Login realisieren.
Die Benutzerdaten(Username, Passwort, GruppenID), sowie die Gruppen stehen in meiner Datenbank.

Da ich noch ein Anfänger in Silverlight bin und das mein erster Versuch ist, weiß ich nicht wo ich Anfangen muss bzw wie es überhaupt funktioniert, was es mit AuthenticationBase, WebContext auf sich hat und wie ich es zu benutzen habe.
Durch das Beispiel was schon in der Geschäftsanwendung vorhanden ist, blick ich nicht durch.

Ich habe bis jetzt nur ein paar Tabellen mit Daten aus der Datenbank gefüllt über die Domänendienstklassen.

Mich würde es sehr freuen, wenn ihr mich auf den richtigen Weg bringen würdet 😃

Gruß

25.05.2011 - 09:48 Uhr

Niemand ne Lösung?

20.05.2011 - 09:04 Uhr

bump

19.05.2011 - 16:14 Uhr

verwendetes Datenbanksystem: MS SQL

Ich habe hier eine per XML erstellt DomainDataSource die für eine Darstellung einer Tabelle dient.

Desweiteren habe ich eine Domänendienstklasse mit der ich einen Datensatz zur Datenbank hinzufüge und diese dann auch Submitte. Doch leider aktualisiert sich die DomainDataSource nicht.

DomainDataSource:


            <riaControls:DomainDataSource Name="ProgramsDS" LoadSize="20" AutoLoad="True" QueryName="GetPrograms">
                <riaControls:DomainDataSource.DomainContext>
                    <ds:ProgramContext/>
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>
 private void btnProgram_Click(object sender, RoutedEventArgs e)
        {
            Programs AProg = new Programs();
            AProg.Name = txtProgram.Text;

            _ProgrammContext.Programs.Add(AProg);
            _ProgrammContext.SubmitChanges();

            ProgramsDS.SubmittedChanges += new EventHandler<SubmittedChangesEventArgs>(ProgramsDS_SubmittedChanges);

            ProgramsDS.SubmitChanges();

            
        }

        void ProgramsDS_SubmittedChanges(object sender, SubmittedChangesEventArgs e)
        {
            if (ProgramsDS.CanLoad)
            {
                ProgramsDS.Load();
            }
        }

Lade ich die Seite neu ist alles aktuell. Ich habe schon in ein paar anderen Foren geschaut, dort sind mehrere Leute die das gleiche Problem haben, aber alle Lösungen die dort Vorgeschlagen werden habe ich versucht und haben nicht geklappt.

Vielleciht weiß jemand von euch weiter 😉

18.05.2011 - 13:49 Uhr

Ich habe das Zauberwort gefunden!

Es ist "[Include]" und muss in der metadata Klasse vor die Property gesetzt werden, damit sie auch serialisiert werden 😃

Bsp:

internal sealed class Programs_has_VersionsMetadata
        {

            // Metadatenklassen sind nicht für die Instanziierung vorgesehen.
            private Programs_has_VersionsMetadata()
            {
            }

            public int Program_ID { get; set; }

            [Include]
            public Programs Programs { get; set; }

            public int ProgramVersionID { get; set; }

            public EntityCollection<Tickets_has_Prog_has_Ver> Tickets_has_Prog_has_Ver { get; set; }

            public int Version_ID { get; set; }
            [Include]
            public Versions Versions { get; set; }
        }

Jetzt klappt alles wunderbar.

Viel Dank Grumbler85 für deine ausführliche Bemühung!

16.05.2011 - 11:47 Uhr

Eine kurze Zwischenfrage...

Ich nutzte ja ADO.NET Entity Data Model, das entspricht doch dem Entity Framework?

Nicht das wir aneinander vorbeireden.

entities.Versions.GroupBy(v => v.Programm_has_Versions.Programs)

Ich kann ab Programs_has_Versions auf kein weiteres Entity Zugreifen, nur noch auf SQL Befehle wie .GroupBy etc

16.05.2011 - 08:10 Uhr

bump...

Das Problem besteht leider immernoch.

EDIT:

Habs jetzt anders gelöst. Doch zufrieden bin ich mit der Lösung nicht wirklich 😦

int SelectedProgramID = ((Programs)lbPro.SelectedItem).ProgramID;
Programs_has_Versions[] PhVAry = _RelationContext.Programs_has_Versions.Where(f => f.Program_ID == SelectedProgramID).ToArray<Programs_has_Versions>();
List<Versions> VerList = new List<Versions>();
foreach (var item in PhVAry)
{
      VerList.Add(_VersionsContext.Versions.Where(g => g.VersionID == item.Version_ID).First());
}

lbVer.ItemsSource = VerList;

Dies steht im SelectionChanged Event der Program Listbox. Beim auswählen werden nun die Versionen zum Program angezeigt.

12.05.2011 - 15:52 Uhr

Gibts denn "DisplayName" bei dir? Du musst schon was auswählen, was existiert ...

Ne, gibt nur VersionNumber. Die soll auch nachher angezeigt werden. Ist es Problematisch wenn VersionNumber ein float Wert ist?

DisplayMemberPath="Versions.VersionNumber" klappt ebenfalls nicht.

Ist ToString so richtig implementiert?

    [MetadataTypeAttribute(typeof(Versions.VersionsMetadata))]
    public partial class Versions
    {

        // Mit dieser Klasse können Sie den Eigenschaften der "Versions"-Klasse
        // benutzerdefinierte Attribute hinzufügen.
        //
        // Beispielsweise wird im Folgenden die Xyz-Eigenschaft als
        // notwendige Eigenschaft gekennzeichnet und das Format für die gültigen Werte angegeben:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        public override string ToString()
        {
            return Convert.ToString(VersionNumber);
        }
        internal sealed class VersionsMetadata
        {

            // Metadatenklassen sind nicht für die Instanziierung vorgesehen.
            private VersionsMetadata()
            {
            }

            public EntityCollection<Programs_has_Versions> Programs_has_Versions { get; set; }

            public int VersionID { get; set; }

            public double VersionNumber { get; set; }
        }
    }

oder muss ich "Versions" zurückgeben?

12.05.2011 - 12:22 Uhr

DisplayMemberPath="Versions.DisplayName" -> Kein unterschied

DisplayMemberPath="Versions.toString()" ->

Fehlermeldung:
Code: 4004
Category: ParserError
Message: Das Festlegen von Eigenschaft 'System.Windows.Data.Binding.Path' hat eine Ausnahme ausgelöst.
File:
Line: 1
Position: 120

12.05.2011 - 11:29 Uhr

Den Haken für "Pluralize or Singularize" habe ich nicht aktiviert.

Hab die Abfrage jetzt nochmal geprüft.

 public IQueryable<Programs_has_Versions> GetPrograms_has_Versions()
{
      var query = this.ObjectContext.Programs_has_Versions.Include("Versions").Include("Programs");
      return query;
}

Wenn ich mir dann query anschaue, ist dort alles vorhanden. Also die Abfrage funktioniert. Alle Einträge(Array of Programs_has_Versions) und Programs/Versions sind auch enthalten und mit den richtigen Daten gefüllt.

Die Frage die jetzt nur noch offen ist, wie stell ich das nun richtig dar?
Von mir aus kann das ganze auch in 2 Listsboxen dargestellt werden, es muss nicht unbedingt ein TreeView sein.

Habe es folgendermaßen probiert:

<ListBox x:Name="lbVer" Grid.Column="1" Grid.Row="2" DisplayMemberPath="Versions" ItemsSource="{Binding Data, ElementName=Program_has_VersionDS}" />

In der Listbox sind jetzt auch 3 Einträge, nur extrem klein.

12.05.2011 - 10:11 Uhr

Ja Datensätzte sind vorhanden. Zum Testen hab ich auch ein DataGrid erstellt das dann wie folgt aussieht:

Eine weitere möglichkeit wäre doch in der DB eine View zu erstellen?

12.05.2011 - 09:29 Uhr

Der PK wird aber noch von einer anderen Tabelle benötigt (Die ich hier jetzt nicht aufgezählt habe).

Außerdem:
du schreibst "this.ObjectContext" - ich benutze immer entities .. kanns damit was zu tun haben?

Ne denke ich nicht, da die Domänendienstklasse das so generiert hat und die anderen Abfragen alle wunderbar funktionieren.

Da es ja mit Include nicht funktioniert könnte es evnt mit nem Join funktionieren?

12.05.2011 - 08:28 Uhr

*Push*

Habe nun feststellen müssen, das wenn ich diese Abfrage gefiniere Versions und Programs = null ist

public IQueryable<Programs_has_Versions> GetPrograms_has_Versions()
{
      return this.ObjectContext.Programs_has_Versions.Include("Versions").Include("Programs");
}

Warum sind die null?

11.05.2011 - 14:19 Uhr
public IQueryable<Programs> GetProgramVersions()
{
            return this.ObjectContext.Programs.SelectMany(e => e.Programs_has_Versions.Version);
}

Fehler:
"System.Data.Objects.DataClasses.EntityCollection<.Web.Programs_has_Versions>" enthält keine Definition für "Version", und es konnte keine Erweiterungsmethode "Version" gefunden werden, die ein erstes Argument vom Typ "System.Data.Objects.DataClasses.EntityCollection<.Web.Programs_has_Versions>" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

Aber indem ich das über die Zwischentabelle abgefragt habe, ist es doch schon fast fertig? Der Datensatz ist ja da, ich muss dann jetzt nur noch das richtige Binding machen, oder?

11.05.2011 - 14:00 Uhr

Ja Tabelle Programs, Versions haben jeweils die Navigationseigenschaft Programs_has_Versions. Die Tabelle Programs_has_Versions hat die Navigationseigenschaften Programs und Versions.

Aber es klappt nicht, wie oben erwähnt.

11.05.2011 - 13:55 Uhr

Aber was gehe sollte:

  
this.ObjectContext.Programs.SelectMany(p => p.Program_has_Versions.Version);  
  

Das funktioniert nicht bei Program_has_Versions kann ich dann wieder Select etc machen aber kein Version

Du kannst vielleicht mal versuchen das Include auf deiner Zwischentabelle auszuführen statt auf der Program-Tabelle.

Klar -.-, gute Idee das Hilft mir schonmal etwas weiter 😃

Jetzt hab ich mal dann Programs und Versions Included

Und folgenden XAML Code

<Grid.Resources>
            <DataTemplate x:Key="VersionTemplate">
                <TextBlock Text="{Binding VersionNumber}" />
            </DataTemplate>

            <sdk:HierarchicalDataTemplate x:Key="ProgramTemplate" ItemsSource="{Binding Versions}" ItemTemplate="{StaticResource VersionTemplate}" >
                <TextBlock Text="{Binding Programs.Name}" />
            </sdk:HierarchicalDataTemplate>
            
        </Grid.Resources>
        <StackPanel>
            <riaControls:DomainDataSource Name="Program_has_VersionDS" LoadSize="20" AutoLoad="True" QueryName="GetPrograms_has_Versions">
                <riaControls:DomainDataSource.DomainContext>
                    <ds:ProgramContext/>
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>

            <sdk:DataGrid ItemsSource="{Binding Data,ElementName=Program_has_VersionDS}"/>
            <TextBlock Text="Programm Übersicht" Style="{StaticResource HeaderTextStyle}" />
            <sdk:TreeView ItemsSource="{Binding Data,ElementName=Program_has_VersionDS}" ItemTemplate="{StaticResource ProgramTemplate}" />

Wie müssen die Bindings nun aussehen? Da ich ja nun noch explizit an Programs.Name bzw Versions.VersionNumber binden möchte.

11.05.2011 - 11:44 Uhr

Ja ich nutze das EF.

Hier wurde mir empfohlen jeder Tabelle einen PK zu geben, deswegen hab ich es so gemacht.

11.05.2011 - 11:11 Uhr

verwendetes Datenbanksystem: Microsoft SQL

Guten Tag,

ich bräuchte etwas Hilfe. Ich bekomm es nicht hin, das 2 Tabellen in einem TreeView angezeigt werden.

Es sind folgende 3 Tabellen vorhanden:

Versions
---------
VersionID
VersionNumber
Programs
-----------
ProgramID
Name

Die Zwischentabelle:

Program_has_Versions
--------------------------
ProgramVersionID
Program_ID
Version_ID

Ich möchte nun einen TreeView erstellen indem die Programme aufgelistet sind und die Versionen untergeordnet.

Etwa so

Name1
- Version 1
- Version 2
Name 2
- Version X
- Version Y

Folgendermaßen sieht der XAML Code aus:

     <Grid x:Name="LayoutRoot">
        <Grid.Resources>
            <DataTemplate x:Key="VersionTemplate">
                <TextBlock Text="{Binding VersionNumber}" />
            </DataTemplate>

            <sdk:HierarchicalDataTemplate x:Key="ProgramTemplate" ItemsSource="{Binding Versions}" ItemTemplate="{StaticResource VersionTemplate}" >
                <TextBlock Text="{Binding Name}" />
            </sdk:HierarchicalDataTemplate>
            
        </Grid.Resources>
        <StackPanel DataContext="{Binding Data,ElementName=ProgramsDS}">
            <riaControls:DomainDataSource Name="ProgramsDS" LoadSize="20" AutoLoad="True" QueryName="GetProgramVersions">
                <riaControls:DomainDataSource.DomainContext>
                    <ds:ProgramContext/>
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>
            <sdk:DataGrid ItemsSource="{Binding Data,ElementName=ProgramsDS}"/>
            <TextBlock Text="Programm Übersicht" Style="{StaticResource HeaderTextStyle}" />
            <sdk:TreeView ItemsSource="{Binding}" ItemTemplate="{StaticResource ProgramTemplate}" />
        </StackPanel>
    </Grid>

Ich habe den Service um folgende Methode erweitert :

public IQueryable<Programs> GetProgramVersions()
        {
            return this.ObjectContext.Programs.Include("Versions");
        }

Aber der Include kann ja nicht funktionieren, da sie keine Relation zueinander haben. Ich habe nun einige Wege versucht, aber leider find ich nicht den richtigen. Wie nutz ich genau die Zwischentabelle?

Mit freundlichen Grüßen

05.05.2011 - 15:37 Uhr

@mvollmer: Den User "MeinUser" habe ich zumindest der Gruppe "Administratoren" hinzugefügt. Genügt das?

Nein, jetzt musst du das Programm auch mit Administratorrechten starten. Wie das ganze in C# aussieht kann ich dir leider nicht sagen. Aber nur weil ein User in der Admingruppe ist, heißt es noch lange nicht das das Programm auch mit Adminrechten gestartet wird.