Laden...
Avatar #avatar-2533.jpg
schaedld myCSharp.de - Member
.NET Web Developer Schweiz Dabei seit 05.04.2006 1.433 Beiträge
Benutzerbeschreibung

Forenbeiträge von schaedld Ingesamt 1.433 Beiträge

17.02.2010 - 18:53 Uhr

Introducing the Entity Framework

Defining and Managing Relationships (Entity Framework)

Soweit ich noch in Erinnerung habe, müsste das EF, dass mit .NET 4.0 kommt noch ein paar Erweiterungen haben (eine Tabelle im EF kann mehrere Tabellen der DB haben und das EF weiss welche betroffen sind). Daher würde ich eventuell noch warten, oder das ganze mit NHibernate oder FluentNhibernate machen.

Zu FluentNHibernate hat Jürgen Gutsch einen lesenswerten Artikel erfasst.

Oder Du gehst alt bewährt mit den TableAdapters an die DB, dort kannst Du in den DataSets die Relationen auch selber erstellen.

17.02.2010 - 18:48 Uhr

Gern geschehen 🙂

17.02.2010 - 18:48 Uhr

Wie sieht es denn aus wenn Du die Commands in SL4 nimmst oder die SLExtensions für SL3. Dann könntest Du, sofern ein Item selektiert worden ist, diese per Command an die ModelView übergeben und wenn es dann mehrere sind, dann werden diese durch dass Command in eine Liste gepackt, in welcher nur die Items sind, die ausgewählt worden sind. Irgendwo müsstest Du dir noch merken welches item angeklickt worden ist, damit Du dieses farbig hinterlegen kannst und dem User so vorgaukelst Du hättest alles auf einmal selektiert.

Vielleicht helfen Dir diese zwei Link's weiter.

Sync Multi Select Listbox with ViewModel

Hat zwar nicht's mit den multiselects zu tun aber mit Commands. Wäre doch egal wenn jedesmal, wenn ein Item selektiert auch ein Command gefeuert wird...

Adventures in MVVM – Commanding with List Boxes

17.02.2010 - 16:12 Uhr

Den Service sprichst Du ja über http an, dann kannst Du dir die aufzurufende URL dynamisch zusammenstellen.

17.02.2010 - 16:09 Uhr

Das ist so weil ja nur auf ein Element geschaut wird. Versuch doch mal die Listbox an eine ObservableCollection zu binden.

17.02.2010 - 16:04 Uhr

Wenn Du auf allen Servern den gleichen Service hast, dann kannst Du dir diesen ja per Service-Reference holen.

Ist dass Ziel ein Lastenausgleich?

17.02.2010 - 15:32 Uhr

Mitlerweile hab ich rausgefunden, dass man einfach nur das von INotifyChanged implementierte event abbonieren muss.
Hmmpf, hätt ich mir auch denken können ....

Genau so mache ich es auch. Ich vesuche, soweit wie möglich keine DP's zu verwenden (weil ich noch nicht so sattelfest in deren Verwendung bin 🙁 )

17.02.2010 - 15:24 Uhr

Wenn ich zum Beispiel eine Anwendung in SL mache, dann versuche ich dies mit dem MVVM-Pattern. Da man dort zwischen Model und GUI eine Zwischenschicht ViewModel braucht, verwende ich dort für jedes Property INotifyPropertyChanged und wenn es eine Liste ist die ObservableCollection<T> diese melden bei Änderungen die Neuerungen an das GUI.

Eventuell mache ich es auch nicht ganz korrekt, aber bis jetzt hat es immer funktioniert.

17.02.2010 - 15:22 Uhr

Ich denke er meinte, dass du den Typen in der Datenbank schon auf Image setzen sollst.

Genau 😉

17.02.2010 - 14:47 Uhr

Meiner Meinung nach müsste in der normalen Klasse dass INotifyPropertyChanged reichen.

17.02.2010 - 14:46 Uhr

eine neue DB musst Du dir ja nicht erstellen. Du sagtest dass Du den Datenwerg BLOB in der DB hast. Wenn es SQL Server ist, dann könntest Du es ja, wie im Beispiel gezeigt auf den Datentyp Image legen um zu schauen ob sich anders verhält.

16.02.2010 - 16:07 Uhr

Was würde mir das bringen ? könnte ich dann Bilder übergeben ?

Ja, wenn Du anstelle des Knotens ein Image Objekt in Deinem Control implementierst, dann schon.

16.02.2010 - 13:54 Uhr

Installiere mal den Firebug im FF, wenn Du nicht schon hast und untersuche die Textbox welche und schaue welche Differenzen es zum IE gerenderten Control gibt.

16.02.2010 - 12:33 Uhr

Hast Du eventuell einen Assembly-Verweis vergessen zu referenzieren?

16.02.2010 - 10:07 Uhr

Das * 100 ist auch die Array-Länge ist aus dem Resultat der WebMethode kommt. Wenn Du nun ein Array mit 6000 Einträgen hast (was ich nicht glaube, sondern eher die Gesamtzahl der Zeichen), dann kannst Du dass genau gleich machen.

Wenn zum Beispiel ein Array, dass 6000 Zeichen hat und pro Zeile 500 Zeichen enthält, dann gibt dass ein String-Array mit der Länge 12. Diese 12 * 10, 100, 200 oder so wird dann die Höhe der Textbox.

16.02.2010 - 09:50 Uhr

Hallo zusammen

Ich bin ein wenig mit den RIA-Services für Silverlight am Experimentieren. Nun habe ich folgendes vor:

  1. Ich will die Objekte von der Datenbank mittels RIA laden (funktioniert)
  2. Der TreeView sieht so aus:
    --> Activity
    --> Child = DataForm, welches die Schritte zur oben genannten Activity darstellen soll.
  3. Das ganze ist nicht MVVM konform da im WrappPanel OnLoad Event die ganze RIA Geschichte gefeuert wird.

Nun habe ich dass Problem, dass der TreeView die Daten erhält und auch darstellt, aber die in den Expandern enthaltenen DataForm bekommen die darunter liegenden Daten nicht.

Ich danke für die Hilfe.


<Grid x:Name="LayoutRoot">         
            <controls:TreeView x:Name="WorkflowTreeView">
            <controls:TreeView.ItemTemplate>
                <DataTemplate>
                    <controlsToolkit:Expander Header="Activity" Margin="10">
                        <controlsToolkit:WrapPanel Loaded="WrapPanel_Loaded">
                            <TextBlock Text="{Binding T_Id}" Margin="10"></TextBlock>
                            <TextBlock Text="{Binding State}" Margin="10"></TextBlock>
                            <dataFormToolkit:DataForm x:Name="StepsDataForm" AutoGenerateFields="True"></dataFormToolkit:DataForm>
                        </controlsToolkit:WrapPanel>
                    </controlsToolkit:Expander>                                     
                </DataTemplate>
            </controls:TreeView.ItemTemplate>
        </controls:TreeView>
  </Grid>

Hier noch die Code-behind.


namespace Buraut.Ais.Workflow.Presentation
{
    public partial class MainPage : UserControl
    {
        private WorkflowPresentationDomainContext _ctx = new WorkflowPresentationDomainContext();

        private IEnumerable _activities = new List<Activity>();
        private IEnumerable _steps = new List<Step>();

        public MainPage()
        {
            InitializeComponent();
            _activities = _ctx.Activities;
            _ctx.Load<Activity>(_ctx.GetActivityQuery());
            WorkflowTreeView.ItemsSource = _activities; 
        }

        private void GetSteps(long activityId)
        {
            _ctx.Load<Step>(_ctx.GetStepQuery(activityId));
        }

        private void WrapPanel_Loaded(object sender, RoutedEventArgs e)
        {
            _activities = _ctx.Activities;
            _ctx.Load<Activity>(_ctx.GetActivityQuery());
            WorkflowTreeView.ItemsSource = _activities; 

            foreach (var activity in _activities)
            {
                Activity ac = (Activity)activity;

                Expander containerExpander = (Expander)WorkflowTreeView.ItemTemplate.LoadContent();
                DataForm stepsDataForm = (DataForm)containerExpander.FindName("StepsDataForm");
                GetSteps(ac.T_Id);
                _steps = _ctx.Steps;
                stepsDataForm.ItemsSource = _steps;
            }
        }
    }
}

Danke für die Rückmeldungen.

16.02.2010 - 09:13 Uhr

Wenn Du den Text in ein String Array liest, dann kannst Du die Lenght des Arrays nehmen und diese dann der Height der TextBox zuweisen.


    <script type="text/javascript" language="javascript">
        var textbox = document.getElementById("<%= TextBox1.ClientID %>");
        function OnGetContent() {
            textbox = document.getElementById("<%= TextBox1.ClientID %>");
            PageMethods.GetContent(OnSuccededGetContent, OnErrorGetContent);
        }

        function OnSuccededGetContent(result, usercontext, methodname) {
            var height = result.length;
            textbox.value = result;
            textbox.style.overflow = "hidden";
            textbox.style.height = height * 100;
        }

        function OnErrorGetContent(usercontext, result, methodname) {

        }
    </script>

Hier noch die eher unspektakuläre Webmethode.


        [WebMethod]
        public static string[] GetContent()
        {
            string[] names = new string[] { "Müller", "Meier", "Maurer", "Bader", "Räuber" };
            return names;
        }

16.02.2010 - 08:09 Uhr

Wenn Du mit Javascript die TextBox mit document.getElementById('TextboxId') gefundent hast, dann solltest Du mit dem gefundenen objekt und height arbeiten können.

16.02.2010 - 08:06 Uhr

Würde mich auch den Vorrednern anschliessen. Hier aber noch ein paar Links die eventuell nach lernen der Basics hilfreich sein könnten.

16.02.2010 - 08:00 Uhr

Mir hilft CSS4you immer ganz gut, wenn ich was im CSS Getümmel nicht mehr ganz so verstehe oder den Wald vor lauter Bäumen nicht mehr sehe.

16.02.2010 - 07:56 Uhr

3D ist's ja nicht wirklich. Wenn Du 3D haben möchtest, dann soltest Du dir das Viewport Control anschauen, aber dann brauchst Du den Text als Grafik, damit dieser mit Deep Zoom Image Composer bearbeitet und das bearbeitete Bild dann im Viewport verwendet werden kann.

16.02.2010 - 07:04 Uhr

Versuche doch client-seitig beim Click auf das entsprechende Element das zu machen was Du serverseitig versuchst zu implementieren.

Zeilenweise Aktualisierung eines GridViews mit Timer

Vielleicht findest Du dort was Dir in die Richtung hilft.

16.02.2010 - 06:50 Uhr

Wenn Du nur eine HTML Seite willst, dann musst Du die Daten per Webservice auslesen und kannst diese dann mit JTemplates in einer HTML Seite rendern lassen.

jTemplates with jQuery, AJAX and Json

16.02.2010 - 06:48 Uhr

Clientseitig mit Javascript (JQuery). Du kannst dann den Style overflow:hidden setzen, dann werden die Scrollbalken nicht mehr angezeigt, aber unter Umständen auch nicht mehr der ganze Text. Daher würde ich die TextBox mit einer CSS-Klasse verbinden und dann über JQuery die Textboxes suchen und die Höhe dynamisch auf dem Client anpassen.

16.02.2010 - 06:45 Uhr

Dann müsstest Du dir selber ein Control bauen das von TreeView erbt und als Node Objkte entgegen nimmt. Der Standard TreeView in ASP.NET hat leider nur Nodes die String Werte entgegen nehmen.

Developing Custom ASP.NET Server Controls

ASP.NET Custom Controls: Part 1

[URL=http://g.www.ms.akadns.net/germany/msdn/webcasts/serien/MSDNWCS-0608-02.mspx]ASP. NET Server Controls – eine Kampfansage an „Clipboard Inheritance“ in neun Teilen.[/url]

15.02.2010 - 11:46 Uhr

Binde die DropDownlist manuell und ohne Datenbindungscontrol an die DropDownList, dann kannst Du die DataSource durchiterieren und dann gegebenenfalls den Anzeigetext manuel zusammen setzen.

09.02.2010 - 15:24 Uhr

Ich würde von der Wiederverwendbarkeit einen ResourcenManager erstellen, der dann Methoden aufweist die GetLabel, GetText haben und so dann in diesen Methoden den übersetzten String mit oder ohne Doppelpunkt auszustatten.

Die Übersetzungen würde ich in der On_Load Methode des jeweiligen Controls machen, dann ist alles an einem Ort.

08.02.2010 - 08:44 Uhr

Nimm die geplanten Tasks von Windows. So ersparst du dir ein Task-Scheduler und eine entsprechende Konfigurationsmöglichkeit.

Dann könnte er in Zukunft, geänderte Anforderungen per Konfiguration an den Dienst weiter geben...

08.02.2010 - 07:23 Uhr

Ich würde Ihn als Windows Service implementieren. Der Vorteil ist, dass bei einem Absturz der Service so konfiguriert werden kann, dass er neu startet, wenn er abgestürtzt ist. Bei ScheduledTasks muss man dann entweder immer kontrollieren, oder man lässt sich im Fehlerfall ein Mail zukommen.

04.02.2010 - 08:48 Uhr

Ich kann den Vorrednern nur beipflichten. Professionell schreibe ich jetzt 2 Jahre mit C# Applikationen, aber das Umfeld hat 5, 10 Jahre Erfahrung in Programmierung, da habe ich auch einige Zeit gebraucht, mich nicht unter Druck zu setzen. In 10 Jahre, wenn ich dann immer noch in der Entwicklung bin, dann sieht es auch wieder anders aus.

Was man für diesen Job braucht ist Geduld und das Wissen, dass man auch mal in die Riegen der "Erfahrenen" aufsteigt.

Lass Dich nciht entmutigen, es wird immer jemanden geben der etwas länger, besser und effizienter kann, aber es gibt auch das Umgekehrte: Dass Du mehr Erfahrung hast, es besser und schneller machen kannst.

In diesem Sinne Kopf hoch und "Happy Programming" 👍

03.02.2010 - 07:43 Uhr

Ich kann mir jetzt vorstellen, dass die TextBox als Source einen String erwartet und keine IENumerable.

Wenn Du einen zusammengesetzten string string an die TextBox binden möchtest, dann kannst Du dass sonst mit einem String Array machen:


foreach(string item in stringArray){
   myTextBox.Text += item + Environment.NewLine;
}

01.02.2010 - 08:47 Uhr

MVVM Pattern mit WPF verwenden

MVVM Pattern mit WPF verwenden

Wobei aber Click-Events nichts im MVVM-Pattern zu suchen haben (ich glaube die sind im Artikel noch drinnen). Anstelle dieser werden Commands verwendet.

29.01.2010 - 11:34 Uhr

Ich denke mal dass Du im On_RowDataBound die Höhe anpassen kannst, sodass Du genügend Platz hast um den Inhalt darzustellen.

29.01.2010 - 11:31 Uhr

Vielleicht hilft Dir dass hier weiter.

29.01.2010 - 09:52 Uhr

In Zusammenhang mit Silerlight WCF RIA Services

29.01.2010 - 08:34 Uhr

Das DataGrid nimmt als Itemssource eine IEnumerable an, also musst Du für die Textbox eine Liste erstellen in etwa so:


IList<string> names = new List<string>();
string textBoxContent = MyTextBox.Text;

MyDataGrid.ItemsSource = names;

21.01.2010 - 15:10 Uhr

Das geht aber nur für Internet Explorer. Vielleicht findest Du hier was.

Ich würde mich aber überlegen ob Du nicht eventuell Silverlight nimmst, ist zwar nur ein Subset des gesamten Frameworks aber ein wenig "leicht" als das ganze WPF.

21.01.2010 - 15:08 Uhr

Andere Vorgehensweise:

  1. Du holst die Daten in eine Liste
  2. Diese sortierst Du nach Deinen Wünschen

Dann hast Du alles schön getrennt.

  1. Daten holen
  2. Daten sortieren
  3. Anzeigen

Und dass ohne die ObjectDataSource.

21.01.2010 - 09:13 Uhr

Vielleicht hilft Dir dieser Link weiter.

21.01.2010 - 08:19 Uhr

Sortierst Du bevor Du die Daten ans GridView bindest oder danach?