Laden...
Avatar #avatar-2753.png
w1z4rd2003 myCSharp.de - Member
Application Developer Dabei seit 23.02.2006 624 Beiträge
Benutzerbeschreibung

Forenbeiträge von w1z4rd2003 Ingesamt 624 Beiträge

04.02.2015 - 11:06 Uhr

hallo zusammen,

Mein Problem ist folgender: In der ListView funktioniert innerhalb des ItemTemplate alles wunderbar, ich kann über <%# GetText("key") %> ein Text im Codebehind auslesen, dieser wird dann angezeigt.

Sobald ich das gleiche innerhalb vom GroupTemplate oder EmptyDataTemplate machen will wird nichts zurückgegeben.

Als nächste Variante wollte ich überall asp:Labels einsetzen diese mit einer ID versehen und im Codebehind anhand dieser ID den Text ändern, leider wird auch so das Label nicht erkannt. mit FindControls wird irgendwie auch nichts gefunden.

Kann mir jemand sagen was hier falsch ist?

Vielen Dank


   <asp:ListView runat="server" ID="TaskSummary" GroupItemCount="10">
        <LayoutTemplate>
            <asp:PlaceHolder runat="server" ID="groupPlaceholder"></asp:PlaceHolder>
        </LayoutTemplate>
        <GroupTemplate>
            <div class="taskcontainer">
          <p class="taskHeader" runat="server" ID="headerTitle">Bitte alle Aufgaben mittels Button "Erledigen" abschliessen</p><br/>
                <div class="tasks-holder">
                <div class="tasks">
                    <table style:>
                        <asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
                    </table>
                </div>
            </div>
                </div>
        </GroupTemplate>
        <ItemTemplate>
            <tr>
                <td class="firstColumn" style="overflow: hidden; word-wrap: break-word; padding-right: 5px;">
                    <asp:Image CssClass="taskIcon" runat="server" ToolTip="Bitte Button 'Erledigen' klicken" ImageUrl="https://cdn3.iconfinder.com/data/icons/glypho-free/64/pen-checkbox-32.png" ImageAlign="Middle" /></td>
                   <td style="width:100%;"> <%#Eval("Title") %></td>
                <td class="secondColumn"><asp:HyperLink runat="server" ToolTip="Mit klicken auf dem Button werden Sie Schritt für Schritt durch den Task geführt" CssClass="pure-button pure-button-primary" NavigateUrl='<%# FormatOnClickMethod(Eval("ID").ToString()) %>' Text="Erledigen"></asp:HyperLink></td>
                
            </tr>
            <tr style="height: 5px"></tr>
        </ItemTemplate>
        <EmptyDataTemplate>
            <div class="emptyTaskContainer">
            <p class="taskHeader">Ihre Aufgaben</p><br/>
            <table>
                <tr>
                    <td style="max-width: 10px;">
                        <asp:Image runat="server" ImageUrl="https://cdn1.iconfinder.com/data/icons/Koloria-Icon-Set/30/Info.png" ImageAlign="Middle" /></td>
                    <td>
                        <p style="font-weight: bold;">Für Sie gibt es momentan keine offene Aufgaben.</p>
                    </td>
                </tr>
            </table>
                </div>
        </EmptyDataTemplate>
    </asp:ListView>

        protected string GetText(string key)
        {
            return "test";
        }

06.10.2014 - 10:44 Uhr

Hallo zusammen,

Ich hab ein Problem mit dem comparen von zwei Javascript Dates.

today = new Date();
var todayDate = today.format("dd.M.yyyy");

Output : 06.10.2014

var duedate = new Date($getItemValue(ctx, "DueDate"));   
parsedDuedate = duedate.format("dd.M.yyyy")

Output: 01.11.2014

todayDate > parsedDuedate ergibt "true" (todayDate ist aber kleiner als duedate)

Wenn parsedDuedate 21.11.2014 ist ergibt es aber true. Das würde heissen dass mit dem gleichen Code der 1. November kleiner ist als der 6. Oktober hingegen der 21. November ist grösser.

Was mache ich da falsch?

Gruss
w1z4rd2003

27.01.2014 - 12:21 Uhr

Hallo zusammen,

Auf meiner Page hab ich innerhalb von einem div ein <%# Eval("Content")%>.

Im Content ist eine Bulletlist definiert sowie überschriften usw.

Das Problem ist dass immer nur Text zurückkommt, ich bräuchte aber das ganze HTML.

Hab mal versucht folgendes zu machen, leider ohne Erfolg.

<%#HttpUtility.HtmlDecode((string)Eval("Content")) %>

Hat jemand einen Tipp?

Gruss, w1z4rd2003

15.01.2014 - 08:12 Uhr

Guten Morgen zusammen,

Ich hab ein UpdatePanel und innerhalb ist im ContentTemplate ein verschachteltes DIV das ein Akkordeon abbildet.

Die Seite lädt ein functions.js darin ist folgendes Skript


	var allPanels = $('.accordion .acc-entry').hide();

	$('.accordion > ul > li > a').on( "click", function() {
		$this = $(this);
		$target = $this.next();

		if ($target.hasClass('active')) {
			$target.removeClass('active').slideUp();
		}

		else if (!$target.hasClass('active')) {
			$('.accordion > ul > li > a').removeClass('active');
			allPanels.removeClass('active').slideUp();
			$target.addClass('active').slideDown();
			$this.addClass('active');
		}

		return false;
	});

Wenn ich die Seite lade sehe ich jetzt mein Akkordeon und die Einträge gehen auch auf, sobald ich aber auf die zweite Seite gehe (Paging) gehen die Einträge nicht mehr auf.

Kann mir jemand helfen? Es scheint irgendwie so dass er beim Page Load diese Javascript Funktion auf die ersten Elemente hinzufügt und nach dem Page Load nicht mehr.

Gruss
Domenico

13.11.2012 - 15:16 Uhr

Hallo,

Ich hab ein Problem und zwar hab ich folgender Code


<asp:Panel runat="server" ID="panelEntity">
    <table runat="server" id="tblMyTable" class="a3-itemTable ms-formtable" style="width: 100%; margin-top: 8px; margin-bottom: 8px;
        border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px;
        border-collapse: collapse;">
        <tr>
            <td class="ms-linksectionheader" style="width: 100%; padding-top: 4px; padding-right: 4px;
                padding-bottom: 4px; padding-left: 4px;" colspan="2">
                <asp:Literal runat="server" Text="<%$Resources:Project, LabelCaseAddress%>"></asp:Literal>
            </td>
        </tr>
        <asp:Repeater runat="server" ID="repAddress">
            <ItemTemplate>
                <!-- Address item -->
                <tr>
                    <td class="ms-linksectionheader">
                        <asp:Literal runat="server" Text="<%$Resources:Project, FieldAddressFullName%>" />
                    </td>
                    <td class="a3-itemValue ms-formbody">
                        <asp:HyperLink runat="server" ID="firstLastName" OnDataBinding="OnDataBinding" 
                            Text='<%# Eval("Address.Name") %>'></asp:HyperLink>
                    </td>
                </tr>
</ItemTemplate>
            <SeparatorTemplate>
                <!-- Seperator -->
                <tr>
                    <td style="border-top: 1 solid #8DBAC5">
                        <img src="/_layouts/images/blank.gif" width="1" height="3" alt="" />
                    </td>
                    <td style="border-top: 1 solid #8DBAC5">
                        <img src="/_layouts/images/blank.gif" width="1" height="3" alt="" />
                    </td>
                </tr>
            </SeparatorTemplate>
        </asp:Repeater>
    </table>
</asp:Panel>

Was ich im meinem Page Load machen möchte ist einige überprüfungen und je nach dem eine weitere tr hinzufügen.

Nun meine Frage:

Über das FindControl komme ich nicht einmal auf die Table, ist das überhaupt möglich? Ich muss eigentlich nur im ItemTemplate eine TableRow einfügen, einfach im Code-Behind.

Gruss

30.09.2011 - 15:08 Uhr

Hallo Grumbler,

Vielen Dank, der erste Teil funktioniert so mit zwei //.

Mein ganzes Xml (Request) sieht so aus


<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_4" APIVersion="2.8.8118.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2011-09-26T09:12:36Z" uuid="53d32999-07b7-467e-9872-2aae02e337fb">
   <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <FuJForm>
            <Data>
               <IssuerInfo>
                  <ReceiverUrl>http://localhost/sites/gk/default.aspx</ReceiverUrl>
                  <ReceiverList>http://localhostsites/gk/Fischerei</ReceiverList>
                  <ReceiverContentType>MyContentType</ReceiverContentType>
                  <ReceiverAdditionalInfo />
               </IssuerInfo>
               <FormData>
                  <fujDateOfReceipt>2011-09-30</fujDateOfReceipt>
                  <Title>b9</Title>
                  <fujPrename>asdf</fujPrename>
                  <fujLastName>asdfasdf</fujLastName>
               </FormData>
            </Data>
         </FuJForm>
      </xfa:data>
   </xfa:datasets>
   <pdf xmlns="http://ns.adobe.com/xdp/pdf/">
      <document>
         <?KeepOnDisk?>
         <chunk>JVBERi0xLjcNJeLjz9MNCjc1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDE2MjM5MS9PIDgwL0Ug
ODExNjkvTiAxL1QgMTYyMDM4L0ggWyA1MTMgMjE1XT4+DWVuZG9iag0gICAgICAgICAgICAgICAg
DQo5MCAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtbnMgNS9QcmVkaWN0b3IgMTI+Pi9GaWx0
ZXIvRmxhdGVEZWNvZGUvSURbPENGNTVBMjNFQzJBQzVGNERCNUQzMzg1N0E5MTVDNUUzPjw3Mzgy
QTlEQjU2NjcwRDQzOUE2Qjg1QTlGMjhFM0JBNT5dL0luZGV4Wzc1IDQ3XS9JbmZvIDc0IDAgUi9M
ZW5ndGggODYvUHJldiAxNjIwMzkvUm9vdCA3NiAwIFIvU2l6ZSAxMjIvVHlwZS9YUmVmL1dbMSAz
IDFdPj5zdHJlYW0NCmjeYmJkYBBgYGJgYDoBIhk3gNn3wOwoEMmyB8x+CRY/ACQZmZ+C2AxfwCKc
YPZREMnHD1b/E8yOAJL/z3kwMAHNfwRWw8A4ZMj/DEyrHwMEGAAadA9jDQplbmRzdHJlYW0NZW5k
b2JqDXN0YXJ0eHJlZg0KMA0KJSVFT0YNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
MTIxIDAgb2JqDTw8L0MgMTE5L0ZpbHRlci9GbGF0ZURlY29kZS9JIDE0NC9MZW5ndGggMTIyL1Mg
NDAvViA5ND4+c3RyZWFtDQpo3mJgYOBlYGDayMDAwGjZyYAKmIGYhYHjAENHB5IoLxQzMBxlEGTo
</chunk>
      </document>
   </pdf>
   <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"><annots /></xfdf>
</xdp:xdp>

Für den Teil FuJForm funktioniert das so mit zwei //, für den Teil chunk aber nicht.

Ich müsste jetzt noch den chunk auslesen könne. Ist das überhaupt möglich in dieser konstellation?

Gruss und Vielen Dank

30.09.2011 - 14:37 Uhr

verwendetes Datenbanksystem: <XML>

Guten Tag,

Ich hab ein Problem und zwar möchte ich aus folgendem XML


<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="XFA2_4" APIVersion="2.8.8118.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2011-09-26T09:12:36Z" uuid="53d32999-07b7-467e-9872-2aae02e337fb">
   <xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
      <xfa:data>
         <FuJForm>
            <Data>
               <IssuerInfo>
                  <ReceiverUrl>http://localhost/sites/gk/default.aspx</ReceiverUrl>
                  <ReceiverList>http://localhost/sites/gk/1</ReceiverList>
                  <ReceiverContentType>MyContentTypeSonderfänge</ReceiverContentType>
                  <ReceiverAdditionalInfo />
               </IssuerInfo>
               <FormData>
                  <fujDateOfReceipt>2011-09-30</fujDateOfReceipt>
                  <Title>b9</Title>
                  <fujPrename>asdf</fujPrename>
                  <fujLastName>asdfasdf</fujLastName>
                  <fujAddress>wasdf</fujAddress>
                  <fujZip>123.00000000</fujZip>
                  <fujCity>asdf</fujCity>
                  <fujStatement>asdf</fujStatement>
               </FormData>
            </Data>
         </FuJForm>
      </xfa:data>
   </xfa:datasets>

der ganze Inhalt von <FormData> auslesen. Mit XPath bringe ich es aber irgendwie nicht zustande. Hab auf http://xpath.online-toolz.com/tools/xpath-editor.php schon alles versucht um eine XPath Expression hinzukriegen die mir genau dies zurückliefert aber leider ohne Erfolg. Kann mir da jemand helfen?


                    doc.LoadXml(content);
                    XmlElement root = doc.DocumentElement;
                    XmlNode fj = root.SelectSingleNode("/FuJForm");

03.12.2010 - 09:31 Uhr

Hallo zusammen,

Mit folgender Klasse möchte ich ein Mail versenden aus meinem Code


 public static class Email
    {
        /// <summary>
        /// Versendet eine Email-Nachricht
        /// </summary>
        public static void SendMail(MailAddress sender, MailAddressCollection recipients, string subject, string body, bool isBodyHtml, Encoding bodyEncoding)
        {
            // Instanziere Email-Nachricht
            MailMessage mail = new MailMessage();

            // Absender
            mail.From = sender;

            // Empfänger
            foreach (MailAddress address in recipients)
            {
                mail.To.Add(address);
            }

            //// CC-Empfänger
            //foreach (MailAddress address in recipientsCC)
            //{
            //    mail.CC.Add(address);
            //}

            //// BCC-Empfänger
            //foreach (MailAddress address in recipientsBcc)
            //{
            //    mail.Bcc.Add(address);
            //}

            // Betreff
            mail.Subject = subject;
            // Nachricht
            mail.Body = body;
            // Nachricht im HTML Format?
            mail.IsBodyHtml = isBodyHtml;
            // Codierung
            mail.BodyEncoding = bodyEncoding;

            // Simple Mail Transfer Protocol Client
            SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
            NetworkCredential cred = new NetworkCredential("meineadresse@gmail.com", "MeinPasswort");
            smtp.Credentials = cred;

            // Variante 2: Mail wird verschickt
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

            try
            {
                smtp.Send(mail);
            }
            catch { }

            // Dispose
            mail.Dispose();
        }

Leider bekomme ich immer diese InnerException

Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat xxx.xx.xxx.xxx:587"}

Kann es damit liegen dass ich hinter einer Firewall bin?

Gruss und Danke
w1z4rd2003

29.11.2010 - 14:23 Uhr

Hallo zusammen,

Ich hab ein Image vom Typ System.Drawing.Image. Dieses Image möchte ich in einem Image WebControls reinladen. Da man diesem WebControls eine ImageUrl mitgeben muss weiss ich jetzt nicht wie ich das lösen kann.

Muss ich das System.Drawing.Image zuerst Speichern und danach auf diese Url zugreifen oder kann man das irgendwie direkt mitgeben?

Gruss und Danke
w1z4rd2003

26.11.2010 - 13:24 Uhr

verwendetes Datenbanksystem: <MS SQL Server 2008 R2>

Hallo zusammen,

ich hab mir eine Test Datenbank erstellt mit Windows Authentication. Ich kann im Management Studio diese öffnen und alles funktioniert super.

Wenn ich jetzt über mein Projekt mit folgendem Connectionstring

ConnectionString="Server=.\SQLExpress; Database=Test; Trusted_Connection=True;"

zugreiffen will bekomme ich folgenden Error

Cannot open database "Test" requested by the login. The login failed.
Login failed for user 'MyComputer\w1z4rd2003'.

Was läuft hier nicht richtig? es ist ja mit dem windows auhtentication mode eingestellt.

Übrigens in den Security Settings ist es auf SQL Server and Windows Authentication mode eingestellt.

Gruss
w1z4rd2003

18.11.2010 - 19:33 Uhr

Hallo zusammen,

Ich versuche jetzt schon seit zwei tagen visual studio 2010 auf mein win 7 ultimate zu installieren. Während der initialisierung des setups bleibt der ganze setup hängen. Ich Eventlog steht auch nichts. Weiss jemand an was es liegen könnte oder hat jemand auch schon solche Probleme erlebt?

übrigens im taskmanager gibt es prozess der suite integration toolkit executable heisst. das memory steigt steigt und steigt...

Gruss

04.11.2010 - 15:06 Uhr

hallo zusammen,

vielen dank. ich hab mal balsamiq ausprobiert und es ist genau das was ich suchte.

gruss

04.11.2010 - 14:14 Uhr

Hallo zusammen,

Kennt jemand von euch ein Tool wo man asp.net controls als prototypen brauchen kann um skizzen zu machen? Etwas ähliches wie expression blends.

ich möchte einfach ein paar masken zeichnen als prototyp für meine richtigen Seiten.

Gruss
w1z4rd2003

06.10.2010 - 13:16 Uhr

Hallo

das problem ist gelöst

System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;

anstatt

System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
06.10.2010 - 10:51 Uhr

Guten Morgen zusammen,

Ich muss die System Language auslesen, hab es jetzt mit


System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;

gemacht, auf mein Rechner bekomme ich "de" zurück.
Wenn ich das jetzt auf ein Englisches OS ausführe bekomme ich auch "de" zurück, eigentlich müsste ich "en" zurückbekommen oder mache ich da etwas falsch?

Gruss
w1z4rd

23.09.2010 - 10:54 Uhr

Guten Morgen,

Ist es möglich ein Paging in einem DataGridView einzubauen? Ich möchte so etwas wie AllowPaging im ASP GridView.

Gruss
w1z4rd2003

21.09.2010 - 16:19 Uhr

Hallo zusammen,

Kann mir jemand sagen wie ich diese Spalte ausblenden kann?
[Siehe Attachment]

Gruss
w1z4rd

21.09.2010 - 14:05 Uhr

Danke Khalid! Genau das war das Problem! Vielen Dank nochmals

21.09.2010 - 13:50 Uhr

Hallo zusammen,

ich möchte folgendes XML deserialisieren


<?xml version="1.0" encoding="UTF-8"?>
<!-- ROOT-ELEMENT -->
<Configurations>
        <!-- Der 1. Datensatz -->
        <Section>
                <Text>Drucker installieren</Text>
                <Skript>MeinScript.ps</Skript>
                <Bemerkung>Installiert

 Drucker xy</Bemerkung>
                <Logoff>1</Logoff>
        </Section>
	<Section>
                <Text>Drucker deinstallieren</Text>
                <Skript>MeinScript.ps</Skript>
                <Bemerkung>Installiert Drucker xy</Bemerkung>
                <Logoff>1</Logoff>
        </Section>
</Configurations>

Im Code hab ich die Funktion DeserializeXml erstellt


 static SectionConfig DeserializeFromXML()
        {
            try
            {
                SectionConfig config = new SectionConfig();

                XmlSerializer deserializer = new XmlSerializer(typeof(SectionConfig));
                using (TextReader textReader = new StreamReader(System.Threading.Thread.GetDomain().BaseDirectory + "Config.xml"))
                    return (SectionConfig)deserializer.Deserialize(textReader);
            }
            catch (Exception)
            {
                throw;
            }
        }

Im Load der Applikation möchte ich danach mit diesem Code meine Objekte abfüllen


            SectionConfig config = DeserializeFromXML();
            foreach (Section client in config.Clients)
            {
            }

im config.Clients sehe ich zwar beide Sections aber die Werte die drin sind (Text, Skript, Bemerkungen und Logoff sind null)

Die Klasse Section sieht so aus


public class Section
    {
        /// <summary>
        /// Kunden Name 
        /// </summary>
        [XmlAttribute("Text", DataType = "string")]
        public string Text { get; set; }

        [XmlAttribute("Skript", DataType = "string")]   
        public string Script { get; set; }

        [XmlAttribute("Bemerkung", DataType = "string")]
        public string Description { get; set; }

        [XmlAttribute("Logoff", DataType = "int")]
        public int Logoff { get; set; }
    }

    /// <summary>
    /// XmlRoot
    /// </summary>
    [XmlRoot("Configurations")]
    public class SectionConfig
    {
        /// <summary>
        /// Element Customer </summary>
        [XmlElementAttribute("Section")]
        public Section[] Clients = new Section[0];
    }

Was brauche ich da noch damit die Werte in meinen Objekten auch angezeigt werden?

Gruss und Danke
w1z4rd

16.09.2010 - 07:46 Uhr

Hallo zusammen,

Ich kämpfe schon seit zwei Tagen an diesem Problem ohne Erfolgt. In einem TabContainer habe ich vier TabPanels, an der dritten Stelle ist ein TabPanel mit einem Button das eigentlich nichts anders macht als nur ein PostBack


    <cc1:TabPanel ID="MeinPanel" runat="server">
        <ContentTemplate>
        <asp:Button ID="btnMeinButton" runat="server" Text="Refresh" Height="22px"/>
        </ContentTemplate>
    </cc1:TabPanel>

Das Problem dass jetzt auftaucht ist dass beim drücken des Buttons mein Panel zwar angezeigt wird aber als erstens wird immer der Inhalt vom Panel an der zweiten Stelle angezeigt.

Jedes weitere Tab hat das gleiche Problem, sprich wenn ich z.B Beim Tab 6 ein PostBack mache erscheint mir im Panel der Inhalt vom Panel 5 + 6.

Das ganze passiert aber erst ab dem Panel nummer 3. Ich weiss wirklich nicht mehr wie weiter.

Gruss
w1z4rd

08.09.2010 - 15:40 Uhr

Ist fast peinlich 🙂

Danke viel mal! 👍

Gruss

08.09.2010 - 14:11 Uhr

Hallo zusammen,

In diesem Beispiel seht ihr ein ganz normales GridView

        <asp:GridView ID="GridView1" runat="server">
                <Columns>
                        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                </Columns>
        </asp:GridView>

Im Page Load hab ich folgenden Code


                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("Title", typeof(string)));
                DataRow dr = dt.NewRow();
                dr["Title"] = "Hallo";


                GridView1.DataSource = dt;
                GridView1.DataBind();

Wenn ich debugge hab ich in meinem dr ein Item und zwar "Hallo".
Das DataBind läuft durch aber im Grid sehe ich nichts.

Was läuft das schief?
Gruss

07.09.2010 - 16:55 Uhr

verwendetes Datenbanksystem: <MySql>

Hallo zusammen, da ich überhaupt kein hirsch von SQL bin frage ich hier mal in die Runde, ich kenn mich zwar mit selects inserts und updates schon aus aber in diesem fall geht es mir zu weit.

SELECT SQL_NO_CACHE org.id as ID, org.orgcode AS 'Object ID', adr_ext.company AS Name, adr_ext.email AS 'Owner'
FROM pcenter.address adr, pcenter.address adr_ext, pcenter.address_organisation_rel aor, pcenter.organisation org
WHERE (aor.address_id = adr.id) AND (aor.address_id = 1401) AND state = 1 AND (aor.organisation_id = org.id) AND (org.category_id = 66) AND (org.external_address_id = adr_ext.id) AND (adr_ext.email = 'servicemanagement.sbb@swisscom.com') ORDER BY 'Object ID'

Dieses Query gibt mir folgende Columns zurück

ID | Object ID | Name | Owner

ich muss jetzt diese resultate updaten indem ich so etwas mache

UPDATE table_name SET Name=txtName, Owner=txtOwner, Sender=txtSender... WHERE ObjectID=txtObjectID

meine table_name wäre aber in diesem fall das resultat vom oberen query, kann ich dieses ganze Query irgendwie als eine Table ansprechen sodass ich einfach ein normales update machen kann?

Danke für eure Hilfe
Gruss
w1z4rd

26.08.2010 - 11:15 Uhr

Hallo herbivore

das problem ist, dass ich alle Zeile auslesen in einem string Array,
danach überprüfe ich jede Zeile ob sie mit "ComputerName" anfängt, wenn ja soll diese bearbeitet werden. Was aber nicht möglich ist da die variable line nur readonly ist.


            string[] template = File.ReadAllLines(_path);
            foreach (string line in template)
            {
                if(line.StartsWith("ComputerName="))
                {
                    line = "ComputerName=" + Session[Constants.HOSTNAME].ToString();
                }
            }

Gruss
w1z4rd

26.08.2010 - 11:02 Uhr

Hallo zusammen,

ich muss ein ini File aus einem Verzeichniss in einem anderen Verzeichniss kopieren. Das Problem ist dass ich das File anpassen muss und dass es erst ins neue verzeichniss kopiert werden kann wenn es angepasst ist, da dieses Verzeichniss ein Job hat der sofort die Datei weiterleitet.

Ich müsste also das File zuerst im Memory kopieren dort anpassen und dann wenn es fertig angepasst ist ins neue Verzeichniss speichern.

Ist das überhaupt möglich?

Eine Lösung wäre über Clipboard, weiss jedoch nicht ob es da andere Lösungen geben würde.


Image imgToCopy = Image.FromFile(opnImage.FileName);
Clipboard.SetImage(imgToCopy);

Gruss
w1z4rd

25.08.2010 - 09:35 Uhr

Vielen Dank für Eure Hilfe,

Mittlerweile hab ich es zum laufen gebracht! 🙂

Gruss
w1z4rd

24.08.2010 - 14:36 Uhr

Hallo zusammen,

An für sich muss ich eine simple sache machen und zwar will ich zwei listen comparen wie in diesem schönen Beispiel in der MSDN


            double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
            double[] numbers2 = { 2.2 };

            IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

            foreach (double number in onlyInFirstSet)
                Console.WriteLine(number);

            /*
             This code produces the following output:

             2
             2.1
             2.3
             2.4
             2.5
            */

In meinem Fall verhält sich das ganze ein wenig anders, ich hab zwei Listen vom Typ <Application>. Application ist ein Objekt mit Eigenschaften wie Name, Number usw.

Als Ausgangslage hab ich zwei Listne die gefüllt sind mit diesen Applikationen, die eine heisst applications (mit 128 Objekten) und die andere heisst baseKitApplications (mit 47 Objekte). Die Einträge in der baseKitApplications sind alle auch in den anderen 128 enthalten, mit Except möchte ich jetzt die Differenz-Menge auslesen.

Damit das auch richtig funktionieren müsste hab ich in meiner Application Klasse folgende Methoden überschrieben


/// Funktion für die Gleichheitsprüfung </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        public bool Equals(Application other)
        {
            if (Name == other.Name && Number == other.Number)
                return true;

            return false;
        }

        /// <summary>
        /// Überschreibt die Funktion Equals für die Gleichheitsprüfung </summary>
        public override bool Equals(Object obj)
        {
            if (obj == null) return base.Equals(obj);

            if (!(obj is Application))
                throw new InvalidCastException("The 'obj' argument is not a Application object.");

            return Equals(obj as Application);
        }

        /// <summary>
        /// Überschreibt die Funktion für die Erstellung des HashCode einer Application Instanz </summary>
        /// <returns></returns>
        public override int GetHashCode()
        {
            string valueToHash = Name + Number;
            return valueToHash.GetHashCode();
        }

        /// <summary>
        /// Gleichheitsoperator </summary>
        public static bool operator ==(Application applicationOne, Application applicationTwo)
        {
            if (ReferenceEquals(null, applicationOne)) return ReferenceEquals(null, applicationTwo);
            if (ReferenceEquals(null, applicationTwo)) return false;

            return applicationOne.Equals(applicationTwo);
        }

        /// <summary>
        /// Ungleichheitsoperator </summary>
        public static bool operator !=(Application applicationOne, Application applicationTwo)
        {
            if (ReferenceEquals(null, applicationOne)) return !ReferenceEquals(null, applicationTwo);
            if (ReferenceEquals(null, applicationTwo)) return true;

            return (!applicationOne.Equals(applicationTwo));
        }

Und jetzt das Problem: wenn

IEnumerable<Application> except = applications.Except(baseKitApplications);

ausgeführt wird bekomme ich alle 128 Objekte zurück, anstelle von 128-47. Die überprüfung basiert laut meiner Equals Methode auf Name und Number, in beiden Fällen werden diese Werte korrekt abgefüllt.

Sieht jemand hier den fehler?

Gruss und vielen Dank
w1z4rd

23.08.2010 - 13:15 Uhr

Hallo MarsStein, die Checkboxen werden dynaimsch generiert


                <asp:TemplateField HeaderText="Selected">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelected" runat="server" Checked='<%# Bind("Selected") %>' 
                            Enabled="true" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:CheckBox ID="chkSelected" runat="server" Checked='<%# Bind("Selected") %>' />
                    </EditItemTemplate>
                    <HeaderStyle Font-Size="Small" HorizontalAlign="Left" />
                    <ItemStyle Width="200px" />
                </asp:TemplateField>

Meine Objekte die ich anzeigen will hab ich ja in einer liste. Beim laden der Page mache ich folgendes


            GridView1.DataSource = searchList;
            GridView1.DataBind();

Somit werden alle meine Einträge gerendert inkl. die checkboxen.
ich müsste jetzt eigentlich beim speichern nur irgendwie überprüfen welches Objekte gecheckd ist.

23.08.2010 - 12:48 Uhr

Guten Tag,

In einem GridView zeige ich Items an, die erste Column ist eine Checkbox danach kommen andere Werte vie Name usw.

Ich möchte jetzt beim speichern alle Items auslesen können die ich selektiert habe.
Jedoch weiss ich nicht genau wie ich das lösen kann, kann mir jemand ein Tipp geben wie ich eine Liste abfüllen kann mit meinen Einträge?

Zu erwähnen ist noch dass im GridView Objekte dargestellt werden z.B (Application, eine Application hat danach die Felder wie Name usw.)

Deshalb am schönsten ist es wenn ich beim Speichern irgendwie alle Objekte zurückbekommen kann die ich selektiert habe.

Somit könnte ich dann das speichern weiter ausprogrammieren.

Gruss
w1z4rd

20.08.2010 - 13:06 Uhr

Vielen Dank Loomis 👍

20.08.2010 - 12:57 Uhr

Hallo zusammen,

Mit diesem Code mache ich eine suche in einer DB, die werte die zurückkommen speichere ich in meinen Application[] Array den ich gemacht habe.

Das Ziel ist ein Array zurückzugeben das alle (Application) Objekte enthält. Beim instanzieren des Arrays hab ich jetzt fix eine Anzahl erfasst. Muss man da zuerst ein select auf die DB ausführen um zu wissen wieviele Datensätze existieren um dann ei array mit den richtigen grösse anlegen zu können oder kann dieser irgendwie dynamisch immer erweitert werden?


                               Application[] arr = new Application[50000000];
                using (IDataReader reader = command.ExecuteReader())
                {
                    if (reader == null)
                        return null;


                    int i = 0;
                    while (reader.Read())
                    {
                        Application app = new Application();
                        app.Name = (string)reader["APPL_FULL_NAME"];
                        app.RebootRequired = (bool)reader["APPL_REBOOT_FLAG"];
                        app.RuleOrder = (int)reader["APPL_RULEORDER"];
                        app.Language = (string)reader["APPL_LANGUAGE_ID"];
                        arr[i] = app;
                        i++;
                    }
                    return arr;
                   
                }
20.08.2010 - 11:39 Uhr

Gelöst, nach einem neu start von visual studio funktionierte es wieder.... komisch

20.08.2010 - 11:10 Uhr

verwendetes Datenbanksystem: <MS SQL Server 2008>

Hallo,

Beim verbinden auf eine DB bekomme ich seit heute diesen Fehler:

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - Das Handle ist ungültig.)

hat jemand eine Idee an was es liegen kann? Mit dem gleichen Code konnte ich mich heute morgen noch verbinden, über das Management Studio komme ich auch problemlos drauf.

Gruss
w1z4rd

17.08.2010 - 14:47 Uhr

Hallo Fabian,

Ich bin mir jetzt nicht sicher ob ich deine Frage richtig verstanden habe aber ich hab eine Klasse die Client heisst und die wie folgt aussieht


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization;

namespace Swisscom.It.ConfigDB.Model
{
    public class Client
    {
        /// <summary>
        /// Kunden Name 
        /// </summary>
        [XmlElement("ClientName")]
        public string Name { get; set; }

        /// <summary>
        /// Type Ini
        /// </summary>
        [XmlElement("TypeIni")]
        public bool Ini { get; set; }

        /// <summary>
        /// Type Xml
        /// </summary>
        [XmlElement("TypeXml")]
        public bool Xml { get; set; }
    }
}

Da sind die drei Elemente drin die ich im XML drin habe, mit der Methode DeserializeFromXML wird somit ein XMLSerializer erstellt vom typ List<Client>

17.08.2010 - 14:40 Uhr

Guten Tag,

Meine Ausgangslage ist ein XML dass ich deserialisieren möchte, ich bekomme aber eine InvalidOperationException "There is an error in XML document (3,2). Dieser Fehler trifft bei der Linie 'clients = (List<Client>)deserializer.Deserialize(textReader);' vor.

Das ist meine Methode


        static List<Client> DeserializeFromXML()
        {
            XmlSerializer deserializer = new XmlSerializer(typeof(List<Client>));
            TextReader textReader = new StreamReader(@"D:\Temp\Clients.xml");
            List<Client> clients;
            clients = (List<Client>)deserializer.Deserialize(textReader);
            textReader.Close();

            return clients;
        }

und hier das Xml


<?xml version="1.0" encoding="utf-8"?>

<Client>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Swisscom</Name>
  <Ini>0</Ini>
  <Xml>1</Xml>
</Client>

Gruss und Danke
w1z4rd

16.07.2010 - 10:54 Uhr

Guten Morgen,

ich muss aus einem link wie dieser jeweils alles lesen bis zum letzten /
wie kann ich das machen mit xslt?

http://servicedeskit/EBE/Shared Documents/Instructions_for_Team_EBE.docx

hab irgendwie alles probiert aber ohne Erfolgt leider

Gruss
w1z4rd

13.07.2010 - 09:25 Uhr

Hallo VizOne,

Vielen Dank! 👍

Gruss
w1z4rd

05.07.2010 - 17:20 Uhr

hallo zusammen,

ich hab ein seltsames problem. In diesem xsl

		<xsl:for-each select="$Rows">
			<xsl:sort select="substring-before(url,filename)" order="ascending" />
			<xsl:call-template name="dvt_1.rowview">
							<xsl:with-param name="ttt"><xsl:value-of select="/All_Results/Result[position()]/url" ></xsl:value-of><xsl:value-of select="position()" ></xsl:value-of></xsl:with-param>
			</xsl:call-template>
		</xsl:for-each>

wird bei der ersten Ausgabe immer die erste Url ausgegeben obwohl ich über position() drauf zugreife. Die zweite Ausgabe gibt mir position() aus, und diese stimmt, es werden alle positionen im for each ausgegeben, 1,2,3 usw.

Wieso bekomme ich mit "/All_Results/Result[position()]/url" aber immer die erste Url?

Wenn ich anstelle von position() hier z.B eine 5 eintrage bekomme ich die 5te url aus meinen Results, aber sobald ich position() eingebe kommt immer wieder die erste

Gruss

30.06.2010 - 13:37 Uhr

Hallo zusammen,

Mit diesem xsl werden suchresultate angezeigt und nach Liste sortiert, deshalb wird beim sort ein substring-before(url,filename) gemacht. Somit wird alles nach der Liste sortiert.

url: http://my-test/sites/sample/110/Lists/Customers/AllItems.aspx
filename: AllItems.aspx


	<xsl:template name="dvt_1.body">
		<xsl:param name="Rows" />
		<xsl:for-each select="$Rows">
			<xsl:sort select="substring-before(url,filename)" order="ascending" />
			<xsl:call-template name="dvt_1.rowview" />
		</xsl:for-each>
	</xsl:template>

Alle Resultate möchte ich jetzt gruppieren, für den Titel der Gruppe muss ich jeweils immer den Wert zwischen den letzten / / der url haben, in diesem Fall ist es Customer.

Ich hab jedoch noch nicht herausgefunden wie dass in xslt gemacht werden kann. Regex wäre ja da eine Variante. Hab auch viele Beispiele gefunden im Netz aber keiner war irgendwie wirklich ausführlich beschrieben.

Hat jemand eine Idee?

Freundliche Grüsse
w1z4rd

23.06.2010 - 15:22 Uhr

Hallo winSharp93,

Ich hab jetzt mal meine User alle in ein HashSet, ich weiss aber nicht genau wie du es meinst. Könntest du mir vielleicht ein beispiel machen?

Am Schluss bräuchte ich das foreach nicht mehr oder? dann reicht die for schleife.


                HashSet<string> users = new HashSet<string>();
                // User aus Liste durchsuchen
                foreach (string user in users)
                {
                    if(!String.IsNullOrEmpty(user))
                    {
                        for (int i = 1; i < 21546; i++)
                        {
                            if (user == "CORPROOT\\" + rangeUser.Value2[i, 1])
                            {
                                if (rangeDevice[i, 10].Value2 == "nein")
                                {
                                    rangeDevice[i, 10].Vaule2 = "ja";
                                    Append(@"h:\updatedUsers.txt", user + "- Index: " + i);
                                }
                                if (rangeDevice[i, 9].Value == "nein")
                                {
                                    Append(@"h:\nichtberechtigeuser.txt", user);
                                }
                                continue;
                            }
                        }
                    }
                }

23.06.2010 - 14:44 Uhr

Hallo,

ich muss 21546 Zeile lesen aus einem File und diese überprüfen mit meiner String Liste "users". In dieser sind ca. 2500 User drin.
Der Ablauf ist im moment das der erste User aus der Liste gelesen wird und dieser dann durch alle Zeilen des Files (21546) geloopt wird bis der Benutzer gefunden wird. Das geht aber zu lange. Kann man das irgendwie tunen damit es schneller durchläuft?

gruss und danke


                foreach (string user in users)
                {
                    if(!String.IsNullOrEmpty(user))
                    {
                        for (int i = 1; i < 21546; i++)
                        {
                            if (user == "CORPROOT\\" + rangeUser.Value2[i, 1])
                            {
                                if (rangeDevice[i, 10].Value2 == "nein")
                                {
                                    rangeDevice[i, 10].Vaule2 = "ja";
                                    Append(@"h:\updatedUsers.txt", user + "- Index: " + i);
                                }
                                if (rangeDevice[i, 9].Value == "nein")
                                {
                                    Append(@"h:\nichtberechtigeuser.txt", user);
                                }
                                continue;
                            }
                        }
                    }
                }
23.06.2010 - 11:11 Uhr

Hat funktioniert.
Habe mal das excel anstatt aus dem C:\ aus meiner externe hd gelesen und es hat funktioniert.

Anscheinend ein problem mit den berechtigungen auf dem c:, wobei komisch ist dass keine fehler aufgetreten sind.

Aber vielen dank für die Hilfe!!

23.06.2010 - 09:48 Uhr

Hallo Sebastian.Lange,

Leider funktioniert es immer noch nicht. Mit SaveAs läufts irgendwie auch nicht.
Ich hab mal das Projekt angehängt.

Im Code ist beschrieben was ich machen möchte.
Ich hab eine Textfile mit Benutzernamen, jeder Benutzername ist auf eine eigene Zeile, dieses textfile lese ich zeile nach zeile und speichere alle Benutzernamen in eine String Liste.
Danch öffne ich das Excel wo ich in der ersten Spalte alle Benutzernamen habe,
in der zweiten Spalte steht jeweils NEIN oder JA zu jedem Benutzername.

was ich jetzt machen mus ist folgendes:
Durchsuchen ob der erste Eintrag(A1) auch in meine String Liste enthalten ist.
Wenn ja (A2) von NEIN zu JA updaten.

Die Logik steht schon, es geht wirklich nur noch um den letzten Schritt.

Lieber Gruss und Danke
w1z4rd2003

22.06.2010 - 14:16 Uhr

Hallo Sebastian.Lange,

Danke für deine Antwort.
Ich hab mal das ReadOnly auf ReadWrite gesetzt und ein try catch gemacht.
Exceptino wirft er keine, er fragt mir beim wb.save ob ich das dokument überschreiben will und wenn ich ja klicke geht er weiter bis zum schluss.

Das dokument wird jedoch nicht geändert. Das Datum bleibt auch noch immer das selbe.

21.06.2010 - 14:45 Uhr

Hallo,

Mittels untenstehenden Code lese ich die Zelle A1 aus was auch funktioniert.
Danach ändere ich den Wert auf "hallo" und speichere es ab.
Es erscheint auch den Popup der mir fragt ob ich es überschreiben will. Nachdem ich auf ok klicke ändert sich aber die Datei nicht. Das änderungsdatum ist auch noch das alte.

hier der code, was fehlt da noch?


        private void button1_Click(object sender, EventArgs e)
        {
            // benötigte Objekte vorbereiten
            Microsoft.Office.Interop.Excel.Application excel = null;
            Workbook wb = null;
            try
            {
                // Excel starten
                excel = new Microsoft.Office.Interop.Excel.Application(); 
                excel.Visible = false;
             
                string dateiname = "c:\\temp\\excel.xlsx";
                // Datei öffnen
                wb = excel.Workbooks.Open(
                    dateiname,
                    ExcelKonstanten.UpdateLinks.DontUpdate,
                    ExcelKonstanten.ReadOnly,
                    ExcelKonstanten.Format.Nothing,
                    "", // Passwort
                    "", // WriteResPasswort
                    ExcelKonstanten.IgnoreReadOnlyRecommended,
                    XlPlatform.xlWindows,
                    "", // Trennzeichen
                    ExcelKonstanten.Editable,
                    ExcelKonstanten.DontNotifiy,
                    ExcelKonstanten.Converter.Default,
                    ExcelKonstanten.DontAddToMru,
                    ExcelKonstanten.Local,
                    ExcelKonstanten.CorruptLoad.NormalLoad);
                
                // Arbeitsblätter lesen
                Sheets sheets = wb.Worksheets;
             
                // ein Arbeitsblatt auswählen…
                Worksheet ws = (Worksheet)sheets.get_Item("ZZ2export-users");
                // …oder eine Zelle
                Range range = (Range)ws.get_Range("A1", "A1");
                // deren Wert auslesen
                string zellwert = range.Value2.ToString();
                range.Value2 = "hallo";

                wb.Save();

            }
            finally
            {
                wb.Close(false, "excel.xlsx", null);
                excel.Quit();
            }
        }

21.06.2010 - 10:44 Uhr

Hallo zusammen, ich möchte gerne aus meinem XML die AccountID auslesen.
Das ganze lese ich mit diesem Code heraus, der XML Node ist aber immer null.
Was ist hier falsch? Gruss und Vielen Dank


            XmlDocument doc = new XmlDocument();
            doc.Load("c:\\Temp\\Bestellung_2010-05-05T08_17_15.xml");

            XmlNode node1 = doc.SelectSingleNode("/UCCBestellFormular/Besteller/Person/AccountId");
            string n = node1.InnerText;


<?xml version="1.0" encoding="utf-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:Bestellformulare:-myXSD-2010-03-19T14-41-59" solutionVersion="1.0.0.1126" productVersion="12.0.0.0" PIVersion="1.0.0.0" href="http://onesps/sites/UCC-Projekt/Bestellformulare/Forms/template.xsn"?>
<?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?>
<my:UCCBestellformular xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:s0="http://microsoft.com/webservices/SharePointPortalServer/UserProfileService" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns1="http://schemas.xmlsoap.org/wsdl/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-03-19T14:41:59" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="de-CH">
	<my:Dateiname>Bestellung_2010-05-05T08:17:15</my:Dateiname>
	<my:Besteller my:Besteller_Bestelldatum="2010-05-05">
		<my:Besteller_NTAccount>hmu1</my:Besteller_NTAccount>
		<my:Besteller_Lieferadresse_Konzerngesellschaft>My Compani</my:Besteller_Lieferadresse_Konzerngesellschaft>
		<my:Besteller_Lieferadresse_Organisation><html xmlns="http://www.w3.org/1999/xhtml"><div>Service Architecture &amp; Innovation</div><div>Unix Infrastructure Service</div></html></my:Besteller_Lieferadresse_Organisation>
		<my:Besteller_Lieferadresse_Strassse>hardstrasse 12</my:Besteller_Lieferadresse_Strassse>
		<my:Besteller_Lieferadresse_Ansprechperson>Martin Muster</my:Besteller_Lieferadresse_Ansprechperson>
		<my:Besteller_Lieferadresse_PLZ>9001</my:Besteller_Lieferadresse_PLZ>
		<my:Besteller_Lieferadresse_Ort>St. Gallen</my:Besteller_Lieferadresse_Ort>	
		<my:Person><my:DisplayName>Hans Muster</my:DisplayName><my:AccountId>hmu</my:AccountId><my:AccountType>User</my:AccountType></my:Person>
	</my:Besteller>
	<my:Workflowstatus>Ausgeführt</my:Workflowstatus>
</my:UCCBestellformular>


09.06.2010 - 15:49 Uhr

Hallo zusammen.

Vielen Dank für Eure Antworten, langsam komme ich der Sache nächer.
Könnt ihr mir vielleicht ein Beispiel Code posten wie das ungefähr gemacht werden soll?

Das wäre sehr nett!!!

Vielen Dank für Eure Hilfe

09.06.2010 - 15:20 Uhr

Hallo barzefutz,

Also ich hab eine Seite, auf dieser Seite hab ich ein Header zu oberst. Diesen Header ist aber nicht fix auf meiner Page drauf sondern wird durch eine URL geladen, der link führt zu einer Html Seite wo ich die ganze Struktur für die Navigation usw. habe.

Mein Problem ist jetzt folgender. In der Render Methode lade ich meine Navigation und hänge ein Cache auf 3 Minute, nur aber für mein Header.

Da diese Seite von vielen Leuten benutzt wird möchte ich nicht dass es Performance Probleme gibt wenn ich mal etwas in meiner Navigation ändere.
So kann ich sicherstellen dass die Navigation für 3 Minuten gecached wird und der Benutzer die änderungen erst in einem späteren Refresh sieht.

Das ist meine Render Methode vielleicht hilft dir das ein wenig weiter


		/// <summary> 
		/// Render this control to the output parameter specified.
		/// </summary>
		/// <param name="output"> The HTML writer to write out to </param>
		protected override void Render(HtmlTextWriter output)
		{
			string lang;
			int lagId = toolUsers.CurrentLanguageID;
			lang = toolLanguages.Convert(lagId);
//			
//			BuilTable(lang);

			// Header von Meiner Navigation laden

			string weburl = System.Configuration.ConfigurationSettings.AppSettings[toolConstants.CONFIG_HTTP_HEADER]; // hier ist die Url wo ich meine Navigationsseite habe

			NavigationTools navTools = new NavigationTools();
			string pageLanguages = "";

			if(!(navTools.StringProperty(navTools.MainMandantChannel,"lang-de").ToLower() == "false"))
			{
				pageLanguages += "de,";
			}
			if(!(navTools.StringProperty(navTools.MainMandantChannel,"lang-fr").ToLower() == "false"))
			{
				pageLanguages += "fr,";
			}
			if(!(navTools.StringProperty(navTools.MainMandantChannel,"lang-it").ToLower() == "false"))
			{
				pageLanguages += "it,";
			}
			if(!(navTools.StringProperty(navTools.MainMandantChannel,"lang-en").ToLower() == "false"))
			{
				pageLanguages += "en,";
			}

			if(pageLanguages.EndsWith(","))
			{
				pageLanguages = pageLanguages.Substring(0, pageLanguages.Length - 1);
			}

			string activeTab = "ghq";

			Microsoft.ContentManagement.Publishing.Channel appChannel = toolChannels.GetAppChannel();
			if(toolChannels.CustomPropertyValue(appChannel, ACTIVE_CHANNEL_PROPERTY_NAME) != string.Empty)
			{
				activeTab = toolChannels.CustomPropertyValue(appChannel, ACTIVE_CHANNEL_PROPERTY_NAME);
			}

			weburl = string.Format(weburl, activeTab, lang, pageLanguages);
			
			HttpWebRequest req = null;
			HttpWebResponse res = null;;
			StreamReader sr = null;

			try
			{
			
				req = (HttpWebRequest) WebRequest.Create(weburl);
				req.KeepAlive = false;
				req.AllowWriteStreamBuffering = false;
				
				//req.Headers.Add("Cache-Control", "no-cache");
				req.Headers.Add("Cache-Control", "max-age=180");
				
				req.Headers.Add("Cache-Control", "s-maxage=180");

				//req.Headers.Add("Pragma", "no-cache");
				//req.Headers.Add("Cache-Control", "max-age=0");
				req.Credentials = System.Net.CredentialCache.DefaultCredentials;

				res = (HttpWebResponse) req.GetResponse(); 
				
				sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("iso-8859-1"));
				output.Write(sr.ReadToEnd());
			}
			catch(Exception ex)
			{
				output.Write(ex.Message);
				//throw new InvalidOperationException("ImageWorlds definitions can't be loaded: " + ex.Message, ex);
			}
			finally
			{
				if (res != null) {res.Close();}
				if (sr != null) {sr.Close();}
			}

			// ENDE Meine Header Navigation laden

			output.Write("<!--stopindex-->");
			base.Render(output);
			output.Write("<!--startindex-->");

		}

09.06.2010 - 14:58 Uhr

Hallo MarsStein,

Leider muss ich das in eine alte Applikation einbauen die noch unter .Net 1.1 läuft. Diese WebRequest.CachePolicy Eigenschaft wird nur in: 4, 3.5, 3.0, 2.0 supported.

An für sich muss ich nur diesen Header Cachen für ca. 3 minute. Oder ich könnte es auch lokal cachen sodass dsa ganze nicht neu geladen wird bis dieser Cache vorhanden ist.

Langsam weiss ich nicht mehr weiter. Ich dachte es würde funktionieren wenn ich am Header den Cache-Control mit dem Value max-age=180 und s-magage=180 übergebe. Aber anscheinend läuft dass so nicht.

Gruss
w1z4rd