Laden...

Forenbeiträge von smichae Ingesamt 260 Beiträge

21.02.2014 - 17:19 Uhr

Vielen Dank für die Antwort.

Ich öffne das Fenster jetzt anders, der Aufruf erfolgt jetzt bei mir im Code und nicht in der .js-Datei.

Durch das setzen des Focus auf ein Hiddenfield beim Schließen kann ich ein Submit machen.

Grüße

20.02.2014 - 20:40 Uhr

Hallo,

ich habe ein Problem Werte aus einem mit javascript erzeugtem Fenster in eine dynamisch erstellte Tabelle zu schreiben.

Ich versuch das mal genau zu beschreiben.

Ich erzeuge eine dynamische Tabelle, untere anderem mit Buttons.
Bei Klick auf den Button wird mit RegisterStartupScript eine javscript-Funktion aufgerufen, die wiederum eine Funktion aus einer js-Class aufruft.
In dieser wird ein modales Fenster geöffnet das Werte in ein hidden-input-field schreibt.
Nun möchte ich die Tabelle aktualisieren.

Ich habe mehrere Wege versucht, keiner hat komplett funktioniert.

  1. Ich habe versucht mit onclose das Schließen des modalen Fensters zu bekommen und dann ein Postback zu machen.
  2. Direktes Schreiben des Wertes in die Tabelle.

Allerdings mit wenig Erfolg.
Da die hidden-Fields aus dem modalen Fenster gefüllt werden gibt es kein onblur- oder onchange-Event.

Wie kann ich ein Postback nach Schließen des modalen Fensters starten.
Oder kann ich direkt einen Wert in ein im Code-Behind erstelltes Element schreiben?

Vielen Dank für Eure Hilfe.
Michael

14.12.2013 - 18:25 Uhr

@Christian: Ich möchte die Anzahl der Ergebnisse ja nicht begrenzen, sondern alle zurückbekommen aber nicht auf einmal laden.

Ich lad die Daten jetzt einfach auf einmal.

Danke für eure Antworten.

12.12.2013 - 23:08 Uhr

Danke für deine Antwort witte.

Ich werde das mir anschauen.

Hab ich die PageSize vom DirectorySeacher falsch verstanden?
Ich dachte ich kann da 500 Werte zurückgeben und dann die nächsten 500, ... .

10.12.2013 - 20:41 Uhr

Hallo zusammen,

ich frage das AD nach allen vorhandenen PCs ab.

Das Ergebnis liegt bei ca. 6000-7000.

Standardmäßig bekommt man ja 1000 Einträge zurück, durch PageSize = 1001 habe ich es geschafft alle Einträge zurück zu bekommen.

Es dauert sehr lang bis das Ergebnis da ist, deshalb würde ich das Ergebnis gerne nach 500 Ergebnissen zurückgeben und dann die nächsten 500 und so weiter.


 //Get all PCs from AD
DirectorySearcher directorySearcher = new DirectorySearcher();
directorySearcher.Filter = @"(&(objectCategory=computer))";
directorySearcher.PageSize = 500;
SearchResultCollection resultCollection = directorySearcher.FindAll();

foreach (SearchResult searchResult in resultCollection)
{
...
}

Allerdings weiß ich nicht wie ich an die nächsten 500 Einträge komme und wie man merkt, dass keine neuen Einträge mehr da sind.

Oder muss ich da GetEnumerator() verwenden?

Vielen Dank.

Grüße
Michael

05.11.2013 - 11:10 Uhr

Hallo zusammen,

ich habe eine Anwendung, die unter Anderem dynamisch eine CommandBar in Outlook erzeugt und Daten aus Mails ausliest.

Auf die Daten der Mails greife ich über die Primary Interop Assembly (Version 14.0.0.0) zu.

Auf den Clients funktioniert die Anwendung ohne Probleme.
Die Anwendung wird aber auch auf Terminal-Servern verwendet.
Dort erhalte ich beim dynamischen Erstellen der CommandBar folgende Fehlermeldung:> Fehlermeldung:

A program is trying to access e-mail address information
stored in Outlook. If this is unexpected, click Deny and verify
your antivirus software is up-to-date.

Der Unterschied ist, dass auf den Terminal-Servern ein anderes Antivirus-Programm installiert ist, das in Outlook nicht als "valid" erkannt wird.

Deshalb habe ich versucht die Anwendung mit caspol in FullTrusted zu erlauben.

Habe ich caspol falsch verstanden? Kann ich damit ganze Anwendung erlauben? Oder nur dlls?
Muss das auf den Terminal-Servern für den User oder Machine erlaubt werden?

Gibt es eine andere Möglichkeit diese Fehlermeldung zu beheben?
Tools wie Click_Yes sind leider keine mögliche Lösung.

Danke für eure Hilfe.

24.01.2013 - 22:05 Uhr

Da der Windows Installer aus dem VS entfernt wurde bin ich gerade dabei ein neues Setup mit Wix zu erstellen.
Es klappt auch alles bis auf die Deinstallation der alten installierten Version.
In Programme und Funktionen tauchen immer 2 Versionen auf, ich möchte aber gerne nur eine Version da haben auch wenn die Installation trotzdem klappt.

Kann mir jemand helfen? Danke!

Meine Setup-Datei sieht wie folgt aus:


<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="FADB7F3E-0E92-494E-B627-930BC217DE29" Name="SMC" Language="1033" Version="1.1.1"
           Manufacturer="abc" UpgradeCode="1BC520F0-F6CB-4E70-8F7B-9F398BE4F25B">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <!--<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A newer version of [ProductName] is already installed." />-->
    <MediaTemplate />


    <Upgrade Id="1BC520F0-F6CB-4E70-8F7B-9F398BE4F25B">
      <!--<UpgradeVersion Minimum="1.1.1.0" IncludeMinimum="no" OnlyDetect="no" Property="NEWERVERSIONDETECTED" />-->
      <UpgradeVersion Minimum="0.0.0.0" Maximum="1.1.1.0" IncludeMinimum="yes" IncludeMaximum="yes" Property="OLDERVERSIONBEINGUPGRADED" />
    </Upgrade>
    
    <InstallExecuteSequence>
      <RemoveExistingProducts After="InstallFinalize" />
      <Custom Action="NewerVersion" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom>
    </InstallExecuteSequence>

    <CustomAction Id="NewerVersion" Error="A later version of [ProductName] is already installed." />

    
    <!--<Fragment>-->
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="abc">
          <Directory Id="PROGFOLDER" Name="SMC">
            <Directory Id="IMAGES" Name="images"/>
            <Directory Id="CULTURE" Name="de-DE" />
          </Directory>
        </Directory>
        <Directory Id="ProgramMenuFolder">
          <Directory Id="SMC_Shortcut" Name="abc">
          </Directory>
        </Directory>
      </Directory>
    </Directory>
    <!--</Fragment>-->

    <!--<Fragment>-->
    <DirectoryRef Id="IMAGES">
      <Component Id="Image" Guid="82BB42E8-AD7A-4E62-B5B7-37C7EA2DFC8D">
        <File Id="Program_Icon" Source="C:\Projects\SMC\Dev\SMC\images\SMC.ico" KeyPath="yes" Checksum="yes" />
      </Component>
    </DirectoryRef>
    <DirectoryRef Id="CULTURE">
      <Component Id="Lang" Guid="109183AC-3F37-4BDC-B659-38C12CE4BAD3">
        <File Id="Language" Source="C:\Projects\SMC\Dev\Culture\bin\Release\de-DE\Culture.resources.dll" KeyPath="yes" Checksum="yes" />
      </Component>
    </DirectoryRef>
    <DirectoryRef Id="PROGFOLDER">
      <Component Id="Dll_Culture" Guid="AC8103CF-FDFB-4792-BF84-577F27A3CC1B">
        <File Id="culture_dll" Source="C:\Projects\SMC\Dev\Culture\bin\Release\Culture.dll" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Dll_Helper" Guid="33DEC912-AF34-4473-8E6D-E36D07B644B1">
        <File Id="helper_dll" Source="C:\Projects\SMC\Dev\Helper\bin\Release\Helper.dll" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Dll_Secman" Guid="9E543EF7-5205-49F2-9B2A-52D0D469781D">
        <File Id="secman_dll" Source="C:\Projects\SMC\Tools\secman.dll" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Dll_SecurityManager" Guid="AF80A4B2-3B5F-4CA9-B357-65AC9031CFF3">
        <File Id="securityManager_2005_dll" Source="C:\Projects\SMC\Tools\SecurityManager.2005.dll" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Dll_UDDI" Guid="35EFC304-EB62-4EB4-A1F4-4D0E0AE56A76">
        <File Id="uddiConnect_dll" Source="C:\Projects\SMC\Tools\abc.UddiConnectLib.dll" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Exe_SMC" Guid="48FF7F56-D4E1-4CE6-B333-8F8BF73B6D58">
        <File Id="exe_file" Source="C:\Projects\SMC\Dev\SMC\bin\Release\SMC.exe" KeyPath="yes" Checksum="yes" />
      </Component>
      <Component Id="Exe_SMC.config" Guid="865139C6-740A-499B-8C0E-FAF163A4A98F">
        <File Id="exe_file.config" Source="C:\Projects\SMC\Dev\SMC\bin\Release\SMC.exe.config" KeyPath="yes" Checksum="yes" />
      </Component>
    </DirectoryRef>
    <DirectoryRef Id="SMC_Shortcut">
      <Component Id="shortcut" Guid="46E8006D-9A0A-4086-94AE-A002F6C5B4D7">
        <Shortcut Id="SMC_abc" Name="SMC" Description="SMC"
                  Target="[PROGFOLDER]SMC.exe" Icon="SMC_Icon" Arguments="prod">
          <Icon Id="SMC_Icon" SourceFile="C:\Projects\SMC\Dev\SMC\images\SMC.ico" />
        </Shortcut>
        <RegistryValue Root="HKMU" Key="Software\Microsoft\Windows\CurrentVersion\Run" Name="SMC"
                       Type="string" Value="[PROGFOLDER]SMC.exe prod" KeyPath="yes" />
        <RemoveFile Id="SMC_abc" Name="SMC" On="uninstall" />
      </Component>
    </DirectoryRef>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <ComponentRef Id="Image" />
      <ComponentRef Id="Lang" />
      <ComponentRef Id="Dll_Culture" />
      <ComponentRef Id="Dll_Helper" />
      <ComponentRef Id="Dll_Secman" />
      <ComponentRef Id="Dll_SecurityManager" />
      <ComponentRef Id="Dll_UDDI" />
      <ComponentRef Id="Exe_SMC" />
      <ComponentRef Id="Exe_SMC.config" />
      <ComponentRef Id="shortcut" />
    </ComponentGroup>

    <!--</Fragment>-->

    <Feature Id="ProductFeature" Title="SMC.SetupTest" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
    <Property Id="ARPPRODUCTICON">RemoveIcon</Property>
    <Icon Id="RemoveIcon" SourceFile="C:\Projects\SMC\Dev\SMC\images\SMC.ico" />


    <CustomAction Id="OurAction" FileKey="exe_file" ExeCommand="prod" Execute="immediate" Return="asyncNoWait" />

  </Product>
</Wix>


Viele Grüße

23.11.2012 - 23:00 Uhr

Bei dem Alert-Window zeigt es mir die ID an.
Im Controller weiß ich aber nicht wie ich an die ID rankomme.
Weder über den string carId noch über Request["CarId"] komm ich an den Wert.

@Peter Bucher: Du meinst aus der DB? Dann brauch ich den Wert doch auch im Controller?!
Oder versteh ich dich falsch?

Danke.
Michael

23.11.2012 - 09:12 Uhr

Hallo,

ich habe eine DropDownListe in einer View.
Bei einer Änderung der Auswahl möchte ich in den Controller gehen und auf den ausgewählten Wert reagieren und dann eine TextBox in der View füllen.

Meine DropDownListe in der View sieht wie folgt aus:


@Html.DropDownList("CarId", ((IEnumerable<Voith.Web.PKWRequest_VHH.Models.Car>)ViewBag.PossibleCars).Select(option => new SelectListItem
                   {
                       Text = Html.DisplayTextFor(_ => option.CarDescription).ToString(),
                       Value = option.CarId.ToString(),
                       Selected = (Model != null) && (option.CarId == Model.CarId)
                   }), "Choose...", new { onchange = "return TestMethod(this)" })
                        @Html.ValidationMessageFor(model => model.CarId)

<script type="text/javascript">
        function TestMethod(action) {
            var val = action.options[action.selectedIndex].value;
            window.alert(val);
            var form = document.forms[0];
            form.action = 'CarId';
            form.value = val;
            form.submit();
       }
</script>

Im Controller habe ich die Funktion CarId, in die ich auch komme, allerdings weiß ich nicht wie ich an den Wert komm.

Hier der Controller:


[HttpPost]
        public ActionResult CarId(string carId) 
        {
            string asd = Request["carId"];
            return null;
        }

Danke,
Michael

22.08.2012 - 16:53 Uhr

Hallo zusammen,

in einer Webanwendung erstelle ich einen dynamischen TreeView mit dem OnTreeNodePopulate-Event.
Die Nodes haben das PopulateOnDemand auf true gesetzt.

Dadurch wird aber bei jedem Node ein Plus davor gesetzt, egal ob es ein Childnode gibt oder nicht.

Kann das irgendwie verhindert werden?

Danke für Eure Hilfe.

Grüße
Michael

27.06.2012 - 09:44 Uhr

Edit: Es funktioniert doch nicht.

26.06.2012 - 22:25 Uhr

Hallo,

ich verwende MSSQL 2008.
Ich habe eine DB mit folgendem Aufbau(Bsp.):

  1. View: Test (TestId, RegionId, VisitId, TestName)
  2. View: Tester (TesterId, RegionId, ClientId, TestNamen)
  3. View: Visit (VisitId, RegionId, VisitDate, NurseId, ClientId)

In meiner Anwendung wollte ich jetzt die verschiedenen Views miteinander verbinden.
Test - Visit (VisitId)
Tester - Visit (ClientId)

Als 1. habe ich folgenden Fehler erhalten:> Fehlermeldung:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - VisitTest.

Nach hinzufügen eines Mappings erhalte ich nun folgende Fehlermeldung:> Fehlermeldung:

Error 3024: Problem in mapping fragments starting at line 157:Must specify mapping for all key properties (TestId) of End Test in Relationship VisitTest.

Ich möchte aber nicht in jeder View alle keys haben, das kann doch auch nicht der Sinn sein.
Ist es überhaupt möglich das mit Views zu machen?

Grüße & Danke
Michael

23.03.2012 - 14:17 Uhr

Hab jetzt den Pfad in ein Text-File geschrieben, es war ein \ zuviel.
Hat jetzt so funktioniert wie ich wollte.

Trotzdem danke.

Grüße
Michael

23.03.2012 - 13:21 Uhr

Du meinst die Prerequisites im Setup?!
Ich benötige aber eine Überprüfung ob schon ein SQL Server installiert ist, egal welche Installation.

Außerdem habe ich ein config-File was bei der Installation verwendet werden soll.
Und die Installation soll "silent" ablaufen.

Grüße
Michael

22.03.2012 - 21:48 Uhr

Hallo,

ich habe ein Setup mit VS erstellt.
Dann hab ich eine CustomAction erstellt.
In der überprüfe ich, ob der SQL Server installiert ist.
Falls nicht soll der SQL Server installiert werden.
Ich habe es getestet indem ich einen festen Pfad angegeben habe, das hat alles gut geklappt.

Jetzt möchte ich aber den SQL Server entweder im Setup weitergeben oder zumindest im gleichen Ordner wie die msi-Datei liegen haben.
Wie komme ich an den Pfad wo die msi-Datei liegt?

Danke für Eure Hilfe und viele Grüße.

20.03.2012 - 09:13 Uhr

Hallo,

ich habe mal wieder ein Problem mit dem ReportViewer von Microsoft.

Ich habe eine WPF-Anwendung, in der ich einen Report anzeige.
Der Report sieht auch in Ordnung aus, d.h. der Text wird komplett angezeigt, wenn nötig (Spalte zu schmal) wird der Inhalt einer Zelle in mehreren Reihen angezeigt.

Wenn ich den Report jetzt nach pdf exportiere zeigt er mir die Zellen auch korrekt an.
Wenn ich den Report nach Excel exportiere sehe ich nun aber nicht den kompletten Zelleninhalt.
Ich muss erst die Größe der Zelle anpassen.

In einer anderen Windows-Anwendung (allerdings keine WPF-Anwendung, sondern Windows Forms) funktioniert das, genauso bei Web-Anwendungen.

Hat jemand eine Idee woran das liegen kann?

Vielen Dank.

Grüße
Michael

27.02.2012 - 11:27 Uhr

Hallo,

ich möchte in einem Report Einträge klickbar machen und den geklickten Eintrag in einem anderen DockPanel anzeigen, aber keinen weiteren Report.
Dafür verwende ich das Drillthrough-Event und verweise auf den selben Report.

Ich erhalte beim erneuten Aufruf des Reports den Fehler:> Fehlermeldung:

A data source instance has not been supplied for the data source ''

Der Report ist an eine BindingSource gebunden und wird beim ersten Laden richtig angezeigt.

Vielen Dank für Eure Hilfe.

15.11.2011 - 17:31 Uhr

Danke für deine Antwort.
Hätte zwar gern eine andere Antwort gehört aber da kann man wohl nichts machen, außer es hat noch jemand eine Idee?!

Grüße
Michael

14.11.2011 - 16:56 Uhr

Hallo,

ich hab mal wieder eine Frage.
Ich habe eine Intranetanwendung bei der Daten nach Excel exportiert werden.

Da auf dem Server kein Excel installiert ist und auch nicht installiert werden kann verwende ich den ReportViewer dafür.

Nun zu meinem Problem.
Ich benötige für meine Headerreihe(Spaltennamen) den Autofilter von Excel.

Kann ich das in dem Report direkt machen?
Oder irgendwie im Code.
Wäre genial wenn jemand eine Idee hat.

DANKE!


ReportDataSource rds = new ReportDataSource("data", dataList);

            string sReportEmbeddedResource = "Test.rdlc";

            reportViewer.Reset();
            reportViewer.ProcessingMode = ProcessingMode.Local;
            reportViewer.LocalReport.ReportEmbeddedResource = sReportEmbeddedResource;
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(rds);
            reportViewer.DataBind();
            reportViewer.LocalReport.Refresh();

            byte[] bytes = reportViewer.LocalReport.Render("Excel", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

            Response.Buffer = true;
            Response.Clear();
            Response.ContentType = "application/ms-excel";
            Response.AppendHeader("Content-Disposition", "attachment; filename=Test.xls");
            Response.BinaryWrite(bytes); // create the file    
            Response.Flush(); // send it to the client to download  

Grüße
Michael

03.11.2011 - 22:30 Uhr

Ich habe ein Problem mit Outlook 2010.

Ich füge ein oder mehrere Attachments in einer Mail ein.
Jetzt erhalte ich aber beim Speichern (oMail.Save();) eine Version im Konflikteordner.
Wie kann ich mehrere Attachments hinzufügen ohne Versionen zu erhalten?

Hier der Teil des Codes in dem die Attachments der Mail hinzugefügt werden.


            Outlook.MailItem oMail;

            oMail = (Outlook.MailItem)COutlook11.getNamespace().GetItemFromID(
                this.MailID.EntryId,
                this.MailID.StorageId);

            if (oMail != null)
            {
                
                oMail.Attachments.Add(oAttachment.FullName, Type.Missing, Type.Missing, Type.Missing);
                oMail.Save();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oMail);
             }

Vielen Dank.

Grüße
smichae

24.10.2011 - 08:54 Uhr

Das UpdatePanel ändert nichts.

@squadwuschel: Ich habe das Event gelöscht und einen Breakpoint in das Page_Load gesetzt.
Nach Auswahl eines Wertes in der DDL geht er aber nicht ins Page_Load.

Ich habe jetzt meinen Fehler entdeckt.
Ich setze das Event zu spät.

Hab es jetzt hinbekommen.

Vielen Dank für Eure Hilfe, dadurch bin ich erst draufgekommen.

Viele Grüße
Michael

23.10.2011 - 16:56 Uhr

Hallo,

hast Du für die DDL AutoPostBack schon auf true gesetzt?

Gruß, MarsStein

Ja!

Wie folgt erzeuge ich die DDL:


DropDownList ddl = new DropDownList();
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
Fillddl(ddl);

tableCell.Controls.Add(ddl);

23.10.2011 - 10:44 Uhr

Hallo,

ich habe eine asp.net-Seite auf der eine Tabelle dynamisch im Code-Behind erzeugt wird.
In der Tabelle gibt es in jeder Reihe eine DropDownListe, die ein SelectionIndexChanged-Event erhält und dann mit Werten gefüllt wird.

Jetzt habe ich das Problem, dass das Event erst dann "auftritt" sobald ich einen Button drücke.
Ich denke das liegt dann an dem PostBack, oder?!

Das funktioniert dann Richtig, d.h. nach dem Button-Click wird die Funktion SelectionIndexChanged aufgerufen.
Allerdings möchte ich nach der Auswahl eines Wertes in der DDL sofort eine andere Zelle mit einem Wert füllen, d.h. ich benötige das Event sofort nach der Auswahl eines Wertes.
Der Button-Click kommt eigentlich erst später.

Vielen Dank.

Mfg Michael

12.09.2011 - 17:56 Uhr

Hallo,

ich hab mal wieder eine dumme, sicher einfache, Frage.

In einer Funktion wird ein EntityObject in eine Liste geschrieben wird.

Diese Funktion kann mehrmals aufgerufen werden.
Bei erneutem Aufruf und hinzufügen des gleichen EntityObjects mit nur einem unterschiedlichen Wert wird dieser neue Wert in alle gleichenEntityObjekte der Liste geschrieben.

Beispiel:
EntityObjekt mit ID 1 und Quantity 3 wird in List1 geschrieben.
Bei neuem Aufruf der Funktion wird das EntityObjekt mit der ID 1 und der Quantity 2 in List1 geschrieben.

Jetzt steht in der List1 an jeder Stelle mit dem EntityObjekt mit der ID 1 der Wert 2 bei Quantity.

Wie kann ich das verhindern?

Danke für Eure Hilfe und ich hoffe das war verständlich.

Grüße
Michael

31.08.2011 - 23:30 Uhr

Ich kann leider momentan nicht mehr angeben.

Sowohl die Skripte, als auch die Fehlermeldung habe ich nicht da.

Ich werde das aber nachreichen, sobald ich wieder darauf zugreifen kann.

Danke!

31.08.2011 - 22:53 Uhr

Hallo,

ich habe ein Setup-File mit Tab-Skripten (zum Hinzufügen oder Ändern von Spalten) erstellt, die beim ausführen des Setups ausgeführt werden.

Jetzt habe ich das Problem, dass die neueren Skripte mit dem MSSQL Server 2008 erstellt wurden.
Manche User haben aber nur den MSSQL Server 2005 installiert.

Jetzt können die Skripte nicht ausgeführt werden.

Können die TSQL-Skripte von 2008 zu 2005 konvertiert werden.
Liegt das evtl. an einem Befehl, den es unter 2005 noch nicht gab?

Danke für Eure Hilfe.

Grüße
Michael

21.07.2011 - 23:28 Uhr

Hallo,

ich habe ein Problem mit dem ReportViewer von Microsoft.

Ich habe ein Dataset mit bekannten/statischen Spalten in den Report eingebunden.
Dazu habe ich noch Spalten, die ich nicht kenne (Der Anwender kann zur Laufzeit für bestimmte Daten Werte hinzufügen).

Hier ein Beispiel wie es gemeint ist:

Tasks|-Text1-|-Text2-|unbek.1|--unbek.2|
Task1|---1---|---7---|--sa---|---------|
Task2|---2---|---5---|--dsa--|--sads---|
Task3|---2---|---9---|-------|---------|

Text1 + Text2 sind bekannte immer auftauchende Spalten.
unbek.1 + unbek.2 sind unbekannte Spalten bzw. es muss auch nicht in jedem Task für jede unbekannte Spalte ein Wert vorhanden sein.

Ich zeige die Daten in einer Matrix an.
Statische Spalten: Text1 + Text2
Dynamische Spalten: unbek1. + unbek.2, ...
Reihen: Tasks

Ich habe nun das Problem, dass durch die Aggregation der Matrix nur Tasks angezeigt werden, die auch Werte in den unbekannten Spalten hat.

In meinem Report wird nun zum Beispiel Task3 nicht angezeigt, da er keine Werte für unbek.1 + unbek.2 hat.

Ich hoffe das war verständlich genug erklärt.

Kann mir jemand weiterhelfen?

Ich hatte schon einen Gedanken, eine "unsichtbare" Spalte (unbek.0) einzufügen, die immer einen Wert hat aber in dem Report eben nie sichtbar ist.

Eine andere Idee war mit Sub-Reports zu arbeiten. Weiß aber auch noch nicht genau wie das aussehen könnte.

Vielen Dank für Eure Hilfe,
Michael

08.12.2010 - 09:23 Uhr

Ok, vielen Dank.
Ich hab mir das schon so in der Art gedacht, war mir aber nicht ganz sicher ob für die RIA Services etwas installiert werden muss.

Vielen Dank talla.

Grüße
Michael

07.12.2010 - 23:17 Uhr

Hallo,

ich habe mal eine prinzipielle Frage.
Ich habe einen Server mit IIS.
Dort ist das .NET-Framework 4 installiert.

Was benötige ich noch um eine Silverlight-Anwendung mit RIA-Services dort zum Laufen zu bringen?

Muss Silverlight installiert werden?
Gibt es eine Möglichkeit RIA Services nicht installieren zu müssen?

Danke für Eure Hilfe,
Michael

28.10.2010 - 15:10 Uhr

wie man den xmlns "local:" definiert ist dir bekannt?

Ja, ich denke schon.


xmlns:local="clr-namespace:Voith.Hydro.MOI2.PdmAccess.Tracking;assembly=Voith.Hydro.MOI2.PdmAccess"

So sieht mein "local:" aus. Ist das richtig?

Was der Unterschied einer Klasse und einem Objekt ist, ist mir schon klar.

Deine Änderungen haben nichts gebracht.
Trotzdem danke.

@ProGamer: Ich habe auch deine Änderungen probiert und es hat auch nichts gebracht.
Hm, vielleicht hab ich auch etwas grundlegendes, anderes falsch.

Grüße
Michael

Edit: Kann es sein das es Probleme gibt, da meine get/set-Funktion die Klasse "CPdmTrackingState" hat
und das Enum die Klasse "CTrackingConstants.TrackingStatus"?

28.10.2010 - 09:13 Uhr

CPdmTrackedObjet ist eine Klasse.
In dieser Klasse ist die get/set-Funktion "Status".

Wenn ich das so schreibe wie du beschrieben hast ...


<ComboBox Name="cmbStatus"
                          IsEnabled="{Binding Path=IsModifiable}"
                          ItemsSource="{Binding Source={StaticResource GetStatus}}"
                          SelectedItem="{Binding Path=Status, Source={StaticResource CPdmTrackedObject},
                              UpdateSourceTrigger=PropertyChanged}"
                          SelectionChanged="cmbStatus_SelectionChanged">
                </ComboBox>

... bekomme ich eine Fehlermeldung:
_
Die Ressource mit dem Namen "{CPdmTrackedObject}" kann nicht gefunden werden. Bei Ressourcennamen wird die Groß- und Kleinschreibung berücksichtigt. Fehler in Objekt "System.Windows.Data.Binding" in Markupdatei "Voith.Hydro.MOI2.GUI;component/trackingwindows/ctrledittrackedobject.xaml", Zeile 46, Position 27._

Was ist daran falsch? Das muss doch irgendwie gehen?! Ich hab grad leider keine Idee mehr wie es gehen könnte.

Vielleicht kann mir noch jemand helfen oder "ErfinderDesRades" weiß noch was.

Vielen Dank,
Michael

27.10.2010 - 14:51 Uhr

Das SelectedItem-Binding hatte tatsächlich keine Source, kam wahrscheinlich durch's probieren.


                <ComboBox Name="cmbStatus"
                          IsEnabled="{Binding Path=IsModifiable}"
                          ItemsSource="{Binding Source={StaticResource GetStatus}}"
                          SelectedItem="{Binding Path=Status, Source=CPdmTrackedObject, UpdateSourceTrigger=PropertyChanged}"
                          SelectionChanged="cmbStatus_SelectionChanged">
                </ComboBox>

Aber auch diese Änderung hat nichts gebracht, oder was muss denn in Path und Source?
Auch das Hinzufügen von "Mode=TwoWay" brachte keine Änderung.

Edit: Egal was ich in der Source angebe, es ändert nichts, es gibt auch keinen Fehler.

Danke.

Grüße
Michael

Edit2: Vielleicht muss ich noch etwas mehr Code angeben?!
Hier der Code für das Enum:


public enum TrackingStatus : int
        {
            /// <summary>
            /// Invalid
            /// </summary>
            Invalid = 0,
            /// <summary>
            /// Inwork
            /// </summary>
            Inwork = 1,
            /// <summary>
            /// Done
            /// </summary>
            Done = 2,
            /// <summary>
            /// Resubmit
            /// </summary>
            Resubmit = 3
        }

Und hier der Code für die Klasse der get+set-Funktion, die ich aufrufen möchte.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Voith.Hydro.MOI2.PdmAccess.Tracking
{
    /// <summary>
    /// a status information for a tracking list, task or object
    /// </summary>
    public class CPdmTrackingState
    {
        /// <summary>
        /// creates a new instance of a tracking state
        /// </summary>
        /// <param name="oStatus"></param>
        public CPdmTrackingState(Webservice.Database.DBTrackingStatus oStatus)
        {
            this.m_oStatus = oStatus;
        }

        public CPdmTrackingState()
        {
        }

        private Webservice.Database.DBTrackingStatus m_oStatus;
        
        /// <summary>
        /// get the ID of the status
        /// </summary>
        //internal int StatusID 
        public int StatusID
        {
            get
            {
                return this.m_oStatus.TrackingStatusID;
            }
            set
            {
                this.m_oStatus.TrackingStatusID = value;
            }

        }

        /// <summary>
        /// the status in the tracking process as an enumeration
        /// </summary>
        public CTrackingConstants.TrackingStatus Status
        {
            get
            {
                return CTrackingHelperFunctions.getEnumFromTrackingState(this.m_oStatus);
            }
        }

        /// <summary>
        /// get the text of the status
        /// </summary>
        public string StatusText 
        {
            get
            {
                switch (StatusID)
                {
                    case((int)CTrackingConstants.TrackingStatus.Done):
                        return Culture.Texts.Tracking_State_Done;
                    case ((int)CTrackingConstants.TrackingStatus.Inwork):
                        return Culture.Texts.Tracking_State_InWork;
                    case ((int)CTrackingConstants.TrackingStatus.Resubmit):
                        return Culture.Texts.Tracking_State_Resubmit;
                    default:
                        return this.m_oStatus.StatusText;
                }
            }

            set
            {
                this.m_oStatus.StatusText = value;
            }
        }

        /// <summary>
        /// get the status text
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return this.StatusText;
        }

        /// <summary>
        /// detects if the status is the same as the compared object
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            if (obj is CPdmTrackingState)
            {
                if (((CPdmTrackingState)obj).StatusID == this.StatusID) return true;
            }
            return base.Equals(obj);
        }

        /// <summary>
        /// GetHashCode
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            return this.StatusID.GetHashCode();
        }

    }
}

Vielleicht geht das gar nicht so wie ich mir das vorstelle. Vielleicht kann das mir auch jemand sagen bzw. sagen wie es dann geht.

Danke!

26.10.2010 - 15:38 Uhr

Hallo,

ich habe eine Combobox, die über einen ObjectDataProvider gefüllt wird.
Die Werte stehen in einem enum.

Die Werte sind:Invalid
Inwork
Done
Resubmit


<src:BaseControl.Resources>
        <ObjectDataProvider x:Key="GetStatus"
                            MethodName="GetValues"
                            ObjectType="{x:Type sys:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="local:CTrackingConstants+TrackingStatus" />
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
</src:BaseControl.Resources>

<GroupBox Name="grpStatus" DockPanel.Dock="Top" BorderThickness="0">
                <ComboBox Name="cmbStatus"
                          SelectedItem="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}"
                          IsEnabled="{Binding Path=IsModifiable}"
                          ItemsSource="{Binding Source={StaticResource GetStatus}}" IsSynchronizedWithCurrentItem="true">
                </ComboBox>
</GroupBox>

Diese Combobox ist an dieses get/set gebunden.


public CPdmTrackingState Status 
        {
            get
            {                
                if (this.m_oUpdateInfo.TrackingStatus != null)
                {
                    return new CPdmTrackingState(this.m_oUpdateInfo.TrackingStatus);    
                }
                else
                {
                    return null;
                }
            }
            set
            {
                CPdmTrackingState sa = new CPdmTrackingState(this.m_oUpdateInfo.TrackingStatus);
                sa = value;
                this.checkForChanges();
                this.OnPropertyChanged(CONST_Status);
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("Status"));
            }
        }

Mein Problem íst, dass bei Wertänderung der Combobox nicht die set-Funktion aufgerufen wird.

Was mache ich nur falsch?
Liegt das an dem ObjectDataProvider?
Gibt es eine andere Möglichkeit die Combobox zu füllen?

Danke für Eure Hilfe.

Grüße
Michael

21.10.2010 - 08:13 Uhr

Ich meine einerseits raw-Dateien allgemein. Ich denke die verschiedenen raw-Formate sind ähnlich aufgebaut.

Im speziellen bzw. meinem Fall meine ich arw-Dateien, da es das raw-Format der Sony-DSLR ist.

Grüße
Michael

18.10.2010 - 22:44 Uhr

Hallo,

ich würde gerne die Exif-Daten einer arw-Datei auslesen und in einem Programm weiterverwenden.
Gibt es dafür eine library?
Ich hab leider auch keinen Aufbau dieser raw-Datei gefunden.

Kann mir jemand weiterhelfen?

Vielen Dank.

Michael

10.09.2010 - 15:04 Uhr

Also vorerst werde ich es wahrscheinlich so machen wie "unconnected" geschrieben hat.
Aber auf Dauer ist die Frage ob es nicht noch eine bessere Lösung gibt.

Danke für Eure Hilfe.

Grüße
Michael

10.09.2010 - 12:46 Uhr

Hallo,

ich eine Anwendung in Verbindung mit der redemption.dll für den Zugriff auf Outlook.
Da es aber nicht direkt um die dll geht habe ich gedacht das ich hier vielleicht besser aufgehoben bin.
Es gibt neuerdings eine 32Bit-Version und eine 64Bit-Version dieser dll.
Ich möchte in meiner Anwendung dynamisch die jeweilige Version der dll laden, je nachdem ob das System 64Bit ist oder 32Bit.

Wie kann ich das bewerkstelligen ohne 2 getrennte Anwendungen erstellen zu müssen?

Per GetNativeSystemInfo lese ich aus, ob es ein 32Bit- oder 64Bit-System ist.

Ich kann nicht beide dlls gleichzeitig referenzieren, da beide genau gleich heißen, also nicht im Windows sondern im VS(Interop.Redemption).

Vielen Dank für Eure Hilfe.

Mfg
Michael

30.08.2010 - 11:58 Uhr

Ich bekomme keine Fehlermeldung, es passiert einfach nichts, d.h. der Button wird nie disabled.
Also irgendwo muss generell das Problem sein.

Vielen Dank.

30.08.2010 - 11:47 Uhr

Ich habe ein Problem mit Binding an einen Button.

Und zwar möchte ich einen Button auf "IsEnabled=false" oder "IsEnabled_true" setzen.

Ich habe ein Interface mit get & set. Und je nach Wert (null oder Element vorhanden) soll der Button gesetzt werden.

 

        private OutlookAccess.IOutlookMail m_oEmail;

        public OutlookAccess.IOutlookMail Email
        {
            get
            {
                return this.m_oEmail;
            }
            set
            {
               try
                {
                    this.m_oEmail = value;

                    if (this.m_oEmail != null)
                    {
                        this.m_oEmail.Exists = true;
                    }
                    else
                        this.m_oEmail.Exists = false;
...
                 }
            }
        }

Und so wollte ich das Binding machen.


Binding binding = new Binding();
bindins.Source = Email;
binding.Path = new PropertyPath("Exists");
this.btnShowMail.IsEnabled(Button.IsEnabledProperty, binding);

Die Property "Exists" ist ein bool-Value des IOutlookMail-Interfaces.

Ich hoffe ihr könnt mir weiterhelfen?
Danke.

20.08.2010 - 08:46 Uhr

Auf dem PC auf dem das Ganze läuft finde ich auch keine cdo.dll.
Wo müsste die denn liegen?

Gruß & Danke
Michael

17.08.2010 - 15:50 Uhr

Ich hab grad wenig Zeit das zu testen.
Werde es aber bei Gelegenheit machen.

Vielen Dank für Deine Hilfe.

Grüße
Michael

13.08.2010 - 20:32 Uhr

Eigentlich wird nur Outlook benötigt.

Grüße
Michael

13.08.2010 - 15:54 Uhr

Sobald ich aus meinem Programm auf die Funktionen der redemption.dll zugreife erhalte ich folgende Fehlermeldung.


Die COM-Klassenfactory für die Komponente mit CLSID{29AB7A12-B531-450E-8F7A-EA94C2F3C05F} konnte aufgrund des folgenden Fehler nicht abgerufen werden: 80040154.

Wie schon gesagt, die dll wurde eigentlich richtig registriert.

Michael

13.08.2010 - 08:28 Uhr

Erstmal hoffe ich das hier der richtige Bereich für diese Frage ist, war mir aber nicht ganz sicher ob das in den Office-Bereich gehört.

Ich habe momentan Probleme mit der redemption.dll unter Windows 7 64-Bit.
Ich habe die dll richtig registriert, d.h. mit regsvr32.exe im Ordner Syswow64.

Hat von Euch das schonmal jemand versucht.

Vielleicht kann mir auch jemand seine Erfahrung mit anderen 32-Bit-dlls berichten, vielleicht bringt das ja was.

Vielen Dank schon im Vorraus.

Grüße
Michael

11.08.2010 - 14:27 Uhr

Hallo,

ich habe ein Problem mit Redemption und Outlook.
Ich möchte alle Ordner im Outlook-Postfach durchgehen, also die Inbox, Drafts, Sent Items, Deleted Items, Outbox, ... .
Ich möchte die anderen Ordner, wie z.B. Calendar, Notes, ... nicht durchgehen.

Folgende Funktion hab ich um die Ordner in der obersten Ebene auszulesen.


		public static List<IOutlookFolder> getOutlookTopFolders()
		{
			List<IOutlookFolder> lstFolders;
			IOutlookFolder oFolder;

			lstFolders = new List<IOutlookFolder>();

			foreach (Outlook.MAPIFolder oEnumFolder in COutlook11.getNamespace().Folders)
			{
				oFolder = new COutlookFolder(oEnumFolder);
				lstFolders.Add(oFolder);

				System.Runtime.InteropServices.Marshal.ReleaseComObject(oEnumFolder);
			}
			
			return lstFolders;
		}

Ich schaff es nicht an die untergeordneten Objekte ranzukommen.

Vielen Dank für Eure Hilfe.

Grüße
Michael

18.03.2010 - 11:22 Uhr

Ich finde die Idee ganz gut, ging mir schon oft so, dass ich kurz vom Platz weggegangen bin und vergessen habe den PC zu sperren.
Als ich es gerade kurz versuchgt habe bekam ich folgende Fehlermeldung:
_
Error - Aktivieren sie erst Bluetooth._
Bei mir ist Bluetooth aktiviert. Ich hab auc eine aktive Verbindung zu meinem Handy.
Wo liegt denn da das Problem?

Grüße
Michael

29.06.2009 - 10:39 Uhr

Das habe ich schon probiert.
Er geht trotzdem nicht in das Event.
Ich habe es jetzt mit dem "PreviewKeyDown" im DataGrid gelöst.
Anders ging es einfach nicht.

Danke.
Mfg
Michael

24.06.2009 - 14:56 Uhr

Hallo,

ich habe eine Anwendung mit DataGrid, Menü und CommandBindings.


    <Window.CommandBindings>
        <CommandBinding Command="ApplicationCommands.New" Executed="Insert_Executed" />
        <CommandBinding Command="ApplicationCommands.Delete" Executed="Delete_Executed" />
        <CommandBinding Command="ApplicationCommands.Close" Executed="Exit_Executed" />
    </Window.CommandBindings>

    <Window.InputBindings>
        <KeyBinding Key="Del"
              Modifiers="Control" 
              Command="ApplicationCommands.Delete" />
    </Window.InputBindings>

Ich hab im msdn in der Enumeration für Modifiers gesehen, dass es auch möglich ist "None" anzugeben.
Ich bekomm dann aber immer folgende Fehlermeldung:
Unrecognized ModifierKeys 'NONE'.

Geht es die Delete-Taste zu verwenden ohne Strg, Alt oder ähnliches drücken zu müssen?

Vielen Dank.
Gruß
Michael

22.04.2009 - 20:22 Uhr

Ok, danke für Eure Hilfe.
Da hab ich die Frage echt etwas falsch verstanden.

Gruß
Michael

22.04.2009 - 00:20 Uhr

Erstmal vorneweg, das ist keine Hausaufgabe oder so, die Frage ist aus einem Buch für die Prüfung MCTS 70-536.

Hier die Aufgabe(leider in Englisch): Create a linked-list generic class that enables you to create a chain of objects of different types.

Kurz gesagt: Eine verkettete Liste erstellen, die verkettete Objekte mit verschiedenen Datentypen zulässt.(Oder so ähnlich!)

Soweit bin ich bisher, aber ich versteh einfach nicht, wie ich das machen soll, damit ich verschiedene Typen verwenden kann.


namespace LinkedList
{
    class Program
    {
        static void Main(string[] args)
        {
            LinkedList<string> liList = new LinkedList<string>();

            liList.AddFirst("String 1");
        }
    }
}

Wäre für Tipps sehr dankbar.
Vielen Dank für Eure Hilfe.
Michael