Laden...

Forenbeiträge von Freeman4gu Ingesamt 71 Beiträge

09.12.2009 - 10:25 Uhr

Hallo zusammen,

ich hoffe Ihr könnt mir helfen, ich würde gerne eine Liste sortieren. Dabei hat jedes Element der Liste ein Property FristEnde, dass auch null sein kann. Ich möchte zu erst nach dem FristEnde sortieren, also die kürzesten ganz oben. Sollte kein Datum in FristEnde stehen, sollte nach dem Erstellungsdatum sortiert werden. Also der letzte Prozess ganz oben bei denen, die kein FristEnde definiert haben.

Ich hoffe doch, dass das soweit möglich ist. Achso Ausgangspunkt ist eine fertige unsortierte Liste.

Viele Grüße
Der Freeman

UPDATE:

Theoretisch müsste es so ja klappen?!


foreach (Item i in itemCollection)
      if (i.FristEnde == null) i.FristEnde = (i.Created.HasValue ?
            i.Created.Value.AddYears(1) : DateTime.Now.AddYears(1));
                
itemCollection.Sort((a, b) => b.FristEnde.Value.CompareTo(a.FristEnde.Value));

23.07.2009 - 13:55 Uhr

Jup das wars, hatte das mittlerweile allerdings schon selbst gelöst.

Trotzdem danke 👍

23.07.2009 - 10:39 Uhr

Hallo zusammen,

ich habe leider ein kleines Problem. Und zwar habe ich ein UpdatePanel, in dem ich über einen Button eine Aktion ausführe.

Sobald diese Aktion erfolgreich durchgeführt ist, soll über eine Methode der MasterPage ein paar Links auf eben dieser freigeschaltet werden.


((MasterPageAnfrage)this.Master).enableLinks();

Beim Debuggen springt der Ablauf auch wunschgemäß in die Methode, allerdings verändert sich auf der Masterseite nichts.

Gibt es eine Möglichkeit diese Methode quasi unabhängig von dem UpdatePanel aufzurufen?

Hoffe Ihr versteht mich, Gruß der Freeman

22.07.2009 - 15:55 Uhr

ok, funktioniert nun alles. allerdings musste ich eine stunde jeweils abziehen. warum ist mir noch unschlüssig, läuft aber.

Danke an alle!!!

22.07.2009 - 11:31 Uhr

wo du's sagst, könnt ich das wohl auch mit setIntervall machen. Bin leider nicht so bewandert in JavaScript. Prinzipiell arbeite ich eher mit den serverseitigen Sprachen ^^

jepp, klappt soweit

so jetzt hab ich aber noch ein problem, und zwar ist die zeit nicht richtig,
ich möchte mit meiner funktion quasi die aktuelle zeit ausgeben, die bisher seit einem bestimmten zeitpunkt (h:mi:sek) vergangen ist.

Allerdings läuft die Zeit cirka 50 min vor?! konstant

hier nochmal der Code 😮P


<script language="Javascript">
	function sendForm()
	{
		//millisec(7,36,0);
		var h = document.getElementById('stunden').value;
		var mi = document.getElementById('minuten').value;
		var sek = document.getElementById('sekunden').value;
		var actions = 'millisec('+h+','+mi+','+sek+')';
		setTimeout(actions,1000);
	}
	function millisec(h, mi, sek) {
		var zeit = new Date();
		zeit.setHours(h);
		zeit.setMinutes(mi);
		zeit.setSeconds(sek);
		var zeit2 = new Date();
		
		ms = zeit2.getTime() - zeit.getTime();
		//ms = 28440000 - ms;
		document.getElementById('test').innerHTML = (new Date(ms)).getHours() + ":" + (new Date(ms)).getMinutes() + ":" + (new Date(ms)).getSeconds();
		var actions = 'millisec('+h+','+mi+','+sek+')';
		setTimeout(actions,1000);
	}
</script> 

22.07.2009 - 09:50 Uhr

Hallo zusammen,

habe da gerade noch ein Problem bekommen. Ist nichts großartiges, aber wenn jemand so aus dem Stehgreif was weiß, wäre ich sehr dankbar.

Ich bekomme beim Aufruf der parametrisierten Funktion millisec(h,mi,sek) immer eine Out of Memory Exception. Vergebe ich die Stunden, Minuten und Sekunden statisch funktioniert das ganze?!

Geht:


function millisec() {
	var zeit = new Date();
	zeit.setHours(7);
	zeit.setMinutes(39);
	zeit.setSeconds(0);
	var zeit2 = new Date();
				
	ms = zeit2.getTime() - zeit.getTime();
	document.getElementById('test').innerHTML = 
	     (new Date(ms)).getHours() + ":" + 
	     (new Date(ms)).getMinutes() + ":" + 
	     (new Date(ms)).getSeconds();
	setTimeout(millisec(),1000);
}

Geht nicht:


<script language="Javascript">
	function sendForm()
	{
		millisec(7,36,0);
	}
	function millisec(h, mi, sek) {
		var zeit = new Date();
		zeit.setHours(h);
		zeit.setMinutes(mi);
		zeit.setSeconds(sek);
		var zeit2 = new Date();
				
		ms = zeit2.getTime() - zeit.getTime();
		document.getElementById('test').innerHTML = 
		     (new Date(ms)).getHours() + ":" + 
		     (new Date(ms)).getMinutes() + ":" + 
		     (new Date(ms)).getSeconds();
		setTimeout(millisec(h,mi,sek),1000);
	}
</script> 

22.07.2009 - 09:42 Uhr

Hallo und danke,

hat soweit alles geklappt, habs allerdings etwas abgewandelt.


Hier die Lösung:

<div id="landkarte"></div>

<div id="index_content">
blabla
</div>

#landkarte {
position: absolute;
background:url('images/landkarte.png');
left:197px;
top:0px;
z-index:-5;
width:602px;
height:460px;
}

#index_content {
position:absolute;
left:197px;
top:0px;
padding:0px;
overflow:auto;
text-align:justify;
width:602px;
height:460px;
z-index:1;
}

21.07.2009 - 17:03 Uhr

Hallo nochmal,

also nein, der MainFrame ist quasi das Grundgerüst, in diesem befinden sich 5 divs. 1 oben, 1 unten und in der mitte quasi drei nebeneinander. von diesen drein soll der mittlere ein fixiertes hintergrundbild bekommen, das sich beim scollen dieses mittleren divs (overflow) nicht mitbewegt.

ehrlich gesagt hatte ich auch schon überlegt das background-position rauszunehmen, war allerdings zu faul ;o)

ich weiss das es das nicht gibt, trotzdem verhält sich dann das image anders als gewöhnlich. auch wenn das fenster so klein ist, das quasi der mainframe ganz links ist, ist mit dem bild alles in ordnung, erst wenn man den browser resized und die webseite (bzw. der mainframe) in die mitte rutscht (margin 0 auto), bleibt das bild an der stelle stehen

21.07.2009 - 11:17 Uhr

Hallo zusammen,

hoffe Ihr könnt mir weiterhelfen. Sollte hoffentlich nicht so das große Problem
werden. Ich habe Probleme den Hintergrund eines Div's zu fixieren.

Ich denke es liegt vor allem daran, dass die Webseite zentriert dargestellt wird.

Zur Erklärung:

Ich haben einen zentrierten Mainframe mit einer weiter von cirka 900px.
In diesem befindet sich das Header-Div und darunter 3 nebeneinander absolut positionierte Div's und darunter wiederrum ein Footer-Div.

In der Mitte der Webseite befindet sich der Content. Dieser soll ein an die linke Navigation angepasstes Hintergrundbild beinhalten, aber trotzdem scrollbar sein.

Soweit so gut, jedoch ist das Hintergrundbild zwar fix positioniert, verändert sich aber sobald beispielsweise das Browserfenster vergrößert wurde (IE7) nicht mit dem Div, sondern bleibt an der Stelle stehen. Also wenn das Fenster breiter gemacht wird, rutscht durch die Zentrierung die Webseite auch logischerweise weiter nach rechts, das Bild allerdings nicht. -> sieht doof aus

hier mal der css code:

body {
text-align: center;
}

#mainFrame {
width:960px;
height:616px;
margin: 0 auto;
position:relative;
}

#index_content {
position:absolute;
left:195px;
top:0px;
padding:0px;
overflow:auto;
background:url('images/landkarte.png');
background-repeat:no-repeat;
background-position:fixed;
background-attachment:fixed;
text-align:justify;
width:602px;
height:460px;
}

Hoffe Ihr könnt mir helfen...

04.03.2009 - 10:52 Uhr

OK Problem glöst.

Habe das CommandField jetzt folgendermaßen abgeändert:


<asp:CommandField ControlStyle-CssClass="imagebutton" SelectText="" ShowSelectButton="true" ButtonType="Button" />

Dazu folgendes Stylesheet:


.imagebutton
{
	background: url('Bilder/pfeil.JPG');
	width:15px;
	height:13px;
	border:none;
	cursor:pointer;
}

Da würd ich mal wieder sagen, danke Microsoft.

04.03.2009 - 10:32 Uhr

OK, das Problem ist weiter eingegrenzt.

Es liegt am Command Field, scheinbar sind dort Probleme mit dem Link zum Bild, die einen doppelten Aufruf erzeugen.

Habe gerade im Command Field den ButtonType auf Button gesetzt und den Link gelöscht und siehe da, kein doppelter Aufruf der Seite mehr.

Was mich allerdings verwundert, der Button als Image wird richtig dargestellt. 🤔

Ich werde versuchen hier ein bisschen am link zu ändern.

03.03.2009 - 14:57 Uhr

Hallo zusammen,

ich habe ein relativ großes Problem.
Ich entwickle im mom eine Verwaltungssoftware, die bei der
Verarbeitung von Personenbezogenen Daten, die SQL Aufrufe
mitloggen soll.

Allerdings wird bei einer meiner Seiten der Methodenaufruf des
GridView immer doppelt ausgeführt und das auch asynchron.

Ich habe ein ganz normales GridView in das ich Personen lade:



    <asp:Panel ID="sucheResult" Visible="false" runat="server" CssClass="SucheHeaderPersonenverwaltung ContainerAllgemein">
        <div class="SuchePersonenverwaltung Rahmen">
            <asp:GridView ID="suchergebnisse" runat="server" AutoGenerateColumns="false"
                DataKeyNames="id" CellPadding="4" GridLines="None" HeaderStyle-Wrap="false"
                 OnSelectedIndexChanged="suchergebnisse_SelectedIndexChanged"
                Style="left: 0px; position:relative; width:100%;" >
                <Columns>
                    <asp:CommandField SelectImageUrl="~/Bilder/pfeil.JPG" ShowSelectButton="true" ButtonType="Image" />
                    <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" />
                    <asp:BoundField DataField="vorname" HeaderText="Vorname" SortExpression="vorname" />
                </Columns>
                <RowStyle CssClass="gvwRowStyle" />
                <AlternatingRowStyle CssClass="gvwAlternatingRowStyle" />
                <SelectedRowStyle CssClass="gvwSelectedRowStyle" />
                <HeaderStyle CssClass="gvwHeaderStyle" />
            </asp:GridView>
        </div>
    </asp:Panel>


Bei dem Event onSelectedIndexChanged wird folgende Methode aufgerufen



protected void suchergebnisse_SelectedIndexChanged(Object sender, EventArgs e)
        {
            getSingleAntragsteller(suchergebnisse.SelectedValue.ToString());
        }


Beim Ereignis wird diese Methode jeweils zwei mal aufgerufen, häufig springt der Debugger beim ersten Aufruf auf getSingleAntragsteller, dann folgt schon der zweite Aufruf und springt dann auch auf getSingleAntragsteller, dann gehts weiter bei dieser Methode.

Bin total ratlos... das Problem an der ganzen Geschichte ist nicht, dass
die Daten zwei mal ausgelesen werden, was allerdings auf Seiten der Performance
schon kritisch ist, sondern das alle Daten die geloggt werden eben nicht nur einmal sondern 2mal geloggt werden. Dies erzeugt unmengen an datenmüll.

Mit freundlichen... der Freeman

21.11.2007 - 10:49 Uhr

OK ich hab jetzt auf deinen Rat gehört und den ganzen Tabellenkram rausgeschmissen und nen Repeater gebaut.

Ich bekomme die Daten jetzt auch übergeben, das speichern und anzeigen bekomm ich alleine hin. 😉

Vielen Dank für die Hilfe 🙂 ohne dich wäre ich wohl verzweifelt...

21.11.2007 - 09:29 Uhr

Hallo,

wär es vielleicht möglich, wenn du mir ein wenig code für so ein repeater control schreibst? Ich komm hier überhaupt gar nicht weiter.

Ähm ich benutze übrigens Code behind, daher hab ich noch weniger Ahnung wie ich an die Daten vom Control rankomme bzw. wie ich das überhaupt anlegen muss.

Das mit TableRow.Cell[0].Controls geht zwar aber ich komm damit trotzdem nicht an irgendwelche daten.

20.11.2007 - 15:40 Uhr

Ich tu mich heute aber auch schwer mit der Programmierung.

Eigentlich entwickle ich auch lieber in php 😉

Naja ich lass das für heute erst einmal seien und mach morgen weiter.
Wäre nett wenn du trotzdem noch ne Antwort hast (bis morgen). 🙂

Dann einen schönen Nachmittag/Abend noch...

20.11.2007 - 15:36 Uhr

Ja mit dem Grid view hab ich auch schon überlegt, allerdings spielt da der Aufbau der Daten nicht richtig mit.

Ich lade hier mal nen beispielbild hoch:

So das funtzt auch soweit mit der Tabelle, ich bekomm die Daten
jetzt auch über das Postback hinaus erhalten.

Allerdings habe ich jetzt noch ein anderes Problem. Ich habe
die Textboxen als Controls angelegt. Hast du vielleicht ne
Idee wie ich an den Text nun von den Textboxen wieder ran
komme?

Mein auslesen Code sieht bisher so aus, funtzt aber nicht:

foreach (TableRow TableRow in tabelle.Rows)
            {
                if ((anzahl_rows % 2) == 1)
                {
                    test.Text = TableRow.Cells[4].Text; // versuchsweiser aufbau mit label
                }
            }
20.11.2007 - 14:22 Uhr

Also ich versuchs nochmal, eigentlich ist es gar nicht so kompliziert.

Ich lese per C# Daten aus ner Datenbank aus.
Diese werden dann mit obigem Befehl in eine Tabelle gespeist.
Dann können die Daten verändert werden, die stehen innerhalb der Tabelle in Textboxen.


            foreach(Daten Daten in datenCollection)
            {
            tabelle.Rows[0].Cells.Add(new TableCell());
            TextBox a = new TextBox();
            a.Text = Daten.daten_in_der_tabelle;
            tabelle.Rows[0].Cells[0].Controls.Add(a);
            } //noch mit Int-Werten die das ganze hochzählen

Ich weiss ist ganz schön umständlich gelöst.

Dann hat man auf der Seite wo die Tabelle angezeigt wird, die Möglichkeit
die Daten innerhalb der Tabelle zu verändern.

Wenn man dann speichern drückt, soll er die Daten beim Postback also
die Tabelle übergeben, sodass ich die Tabelle auslesen kann und die
Datenbank mit den Änderungen updaten kann.

Übrigens bin dir sehr dankbar für deine Unterstützung, weiss nicht ob das bis jetzt so rübergekommen ist. 👍

20.11.2007 - 13:24 Uhr

Naja das soll ja nicht funktionieren, ich übergebe ja Daten, die gespeichert werden sollen.

Hmm...

20.11.2007 - 12:07 Uhr

Hmm naja ich hab das ganze jetzt abgeändert. Das besteht jetzt alles aus Tabellen.

Allerdings habe ich da wieder einmal das Problem, das wenn ich ein Postback mache, meine Tabelle wieder komplett verschwindet. Wie bekomm ich das hin, das alle Felder, auch veränderte einer Tabelle mit einem Postback übergeben werden.


tabelle.Rows[zaehler].Cells.Add(new TableCell());

So werden die Zellen angelegt, funtzt auch problemlos. Ich will jetzt aber den Inhalt der Zellen speichern, dafür hab ich nen Speichernbutton, der die speichern-Aktion aufruft. Dabei wird die Seite ja wieder neu geladen. Um zu verhindern, das die Standardwerte wieder eingefügt werden, setzte ich das Laden der Tabelle in eine Abfrage


if(!IsPostBack){..}

damit gibts halt auch keine Probleme, nur die Inhalte der Tabelle werden nicht übergeben.

die tabelle selbst ist:


<asp:Table ID=tabelle runat=server>
</asp:Table>

Bitte um Hilfe...

19.11.2007 - 11:31 Uhr

Hmm hab das jetzt soweit ausprobiert. Gibt auch keine Fehler, allerdings auch keine Ausgabe.

Um das nochmal zu verdeutlichen, das hab ich auch noch nicht erwähnt. Ich habe insgesamt eine Masterpage. Dann habe ich dieses Oberpanel sozusagen in einem Contentplaceholder und möchte nun (unbegrenzt) viele neue Oberpanels in diesem Bereich erstellen (per C# versteht sich). Einziger Unterschied die Eigenschaft top wird immer höher gesetzt.

Natürlich sollten die Felder nachher noch gefüllt werden.

Übrigens sry wegen der falschen Kategorie.

15.11.2007 - 15:54 Uhr

Hallo zusammen,

ich sitze grad an nem Problem, an dem ich nicht weiterkomme. Ich entwickel gerade eine Webanwendung unter ASP.NET mit C#.

Dabei muss ich aus einer Datenbank mehrere Werte für jeweils eine Kategorie auslesen. Diese Werten sollen für die Kategorien jeweils in Panels (ich nen sie mal Unterpanels) geordnet aufgelistet werden.

Da ich eine unbekannte anzahl an Kategorien habe, muss ich auch eine unbekannte anzahl an Panels (hier Oberpanels) erstellen. Diesen Panels haben wie oben beschrieben, wieder Panels in sich, die Unterpanels, die mit den Werten zu den Kategorien gefüllt werden.

Ich habe jetzt ein Panel auf der Seite integriert. Nun versuche ich mithilfe von C# dieses Panel auf der Seite zu kopieren, sodass es dann dort mehrmals je nach Anzahl der Kategorien erscheint.

ich versuch mal son bissl code zum veranschaulichen:

index.aspx

(...)
<asp:panel id=oberpanel runat=server>
      <asp:panel id=panel1 runat=server><asp:textbox id=name runat=server />
      </asp:panel>
      (...)
</asp:panel>

index.aspx.cs

(...)
Panel test=new Panel();
test=Copyof(oberpanel); // Copyof gibts natürlich nicht, aber so vom Prinzip 

Das im Endeffekt in diesem Beispiel zwei Objekte entstehen.

Falls jemand auch eine Alternative dazu hat, würde die mich auch interessieren.

Schon einmal Danke im voraus.