Salute Norbert
Wenn du das jetzt mit dieser Komponente umsetzen möchtest, könnte das bspw. so gehen:
public class DelegateSearchOption : ISearchOption
{
private readonly Func<FileInfo, bool> _filter;
public DelegateSearchOption(Func<FileInfo, bool> filter)
{
this._filter = filter;
}
public bool Match(FileInfo fileInfo)
{
return this._filter();
}
}
Und die Benutzung bspw.:
XYZ.Options.Add(new DelegateSearchOption(f => File.GetExtension(f.Name).Equals("gif")));
// [...]
Gruss Peter
Salute Steini
An der Replace-Methode liegt es nicht, sondern daran wie du sie verwendest.
Schau dir mal die Signatur der Methode an
und wirf einen Blick darauf:
Gruss Peter
Salute schuppsl
Dein verlinkter Artikel zeigt, wie man eigene Events bei CustomControls definieren kann, hat aber direkt nichts mit deinem Problem zu tun und ist so auch keine Lösung.
Gruss Peter
Hallo schuppsl
Nein, keine Chance.
Am besten einfach mal die Links durchlesen, die ich dir gepostet habe.
Eine einfache Lösung wäre, X Controls immer zu erstellen und dann auf sicht- unsichtbar schalten.
Ansonsten wirds ziemlich knifflig, das ist so.
Gruss Peter
Hallo haargel
Hört sich einfach an, ist es aber nicht 😉.
Das ist unmöglich, so wie du es möchtest.
Crossposts werden auf beiden Foren nicht geduldet, der Vollständigkeitshalber die den zweiten Thread auf ASP.NET Zone:
Gruss Peter
Hallo ZeroQool
Das Problem ist mir nicht bekannt.
Wie und wo rufst du Server.Transfer() genau auf?
Gruss Peter
Salute Phil
Du solltest Events so früh wie möglicht (OnInit) und spätestens in OnLoad registrieren. Das Control braucht auch zwingend eine ID und muss zum gleichen Zeitpunkt zur Control-Hierarchie hinzugefügt werden, sonst funktionierts nicht.
Zum Thema dynamische Controls, kannst du dich hier mal einlesen:
Gruss Peter
Salute zusammen
Die aufgezählten "Nachteile" sehe ich eher als Fakten und nicht als Nachteile.
Die Laufzeitfehler bekommt man schon zur Entwicklungszeit zu sehen, bei der Produktion bzw. dem Deployment weiss man ja, das es dann funktioniert.
m.E. gibt es keine Nachteile bei der Verwendung von Dependency Injection, nur Vorteile.
Vorteile sind unter anderem auch:
Grus Peter
Hallo Martin
Scott Hanselman hat eine Liste aufbereitet:
Ich habe gute Erfahrungen mit autofac gemacht.
Aber Ninject und StructureMap sehen soweit auch ganz gut aus.
Gruss Peter
Hallo Cmorpheus
Lies dich mal in die Grundlagen von AJAX ein, dann verstehst du auch, das es anders nicht geht.
Silverlight oder Flash ist dann wieder was anderes, dort läuft alles nur auf dem Client, aber man kann dort natürlich Daten vom Server anfordern.
Das Prinzip wäre dort dann das gleiche, aber ich denke das ist nicht das was du willst, denn einfacher ist es nicht 😉.
Gruss Peter
Salute Lion1984
Das geht m.E. nur, wenn du die zu schützenden Dinge in eigene Sections auslagerst, bzw. eigene AppSettings und dir den Connectionstring dann zusammenbaust.
Oder so wie du es im Moment hast, allerdings sollte das auch ohne Reflection gehen. So wie es im Artikel per Code gezeigt wurde.
Gruss Peter
Hallo Lion1984
Kannst du doch nicht. Entweder ist er verschlüsselt und muss beim Ändern auch wieder verschlüsselt werden, oder er ist nicht verschlüsselt und alles bleibt beim alten.
Oder missverstehe ich dich da jetzt total?
Gruss Peter
Hallo math55
Wie lautet den der "tempPath" und wie sieht deine Ordnerstruktur, die Anwendungkonfiguration und deine Berechtigungen aus?
Gruss Peter
Hallo talla
Von der Zeichenanzahl wäre es mit der Nutzung von StringComparison jedoch nicht kürzer, aber eleganter, da hast du Recht 😃.
Gruss Peter
Hallo Lion1984
Im ersten Link (4guysfromrolla) ist eine Lösung ohne und mit Code für genau deine Anforderung.
Gruss Peter
Hallo Lion1884
Das gibt es schon eingebaut, dafür musst du keine Handstände mit Reflection machen, auch wenn du es per Code machen willst.
Gruss Peter
Hallo zusammen
Noch kürzer:
var pdfFiles = File.ReadAllLines("C:/PfadZurDatei").Where(l => l.ToLower().EndsWith(".pdf"));
File.WriteAllLines("C:/Zieldatei",pdfFiles.ToArray());
Gruss Peter
Salute #coder#
Im einfachsten Fall so:
Das kannst du ausbauen, wie du willst.
Die Lösungen in deinem Link finde ich ehrlich gesagt nicht so prikelnd, da gibt es zuviele Redundanzen und das geht auch sauber ohne SessionState.
Gruss Peter
Hallo ZeroQool
Wieso verwendest du überhaupt Threading?
Wenn der Aufruf zu lange geht, würde ich über Caching nachdenken.
Ausserdem greifst du auf ein GridView zu, das erstens in einem anderen Thread läuft (Ohne Synchronisierung) und zweitens evt. gar nicht mehr besteht.
Wie gesagt, schau dir mal Caching oder aber asynchrone Handler / Pages an.
Gruss Peter
Hallo ZeroQool
Zeig doch mal ein bisschen Code.
Was meint der Debugger dazu?
Gruss Peter
Salute MoreThanWords
Server.Transfer() wäre eine Alternative und stellt ein serverseitiges "Redirect" dar.
Du musst aber beachten, das clientseitig die Url nicht aktualisiert wird, d.h. bei einem F5 clientseitig, wird wieder die vorherige Seite geladen.
Gruss Peter
Salute Phil_B
Die ObjectDataSource erstellt eine neue Instanz deines angegebenen Typs, wenn das Page oder ein Control ist, wird dort nichts initialisiert, Session / etc... ist also null.
Funktionieren würde es, wenn du statische Methoden nimmst.
Aber wie schon geschrieben, nimmst du am besten eine dedizierte Klasse dafür, die nur das macht und keine zusätzlichen Abhängigkeiten hat.
Gruss Peter
Hallo thepixel
Eine Erweiterungsmethode meinst du?
Und von welchem Typ ist "ucsession"?
Wie ist das Ding implementiert?
Debugger schon mal angeworfen und das Problem damit nachvollzogen?
Gruss Peter
Hallo thepixel
Und was ist "ucsession", ein Integer der die Rekursionstiefe angibt?
Bitte bessere Namen wählen, mich hat das verwirrt.
Ich persönlich habe diese Überladung nie benutzt, da man so eine Zahl drin hat die konstant drin steht und jedes Mal geändert werden muss.
Als Best Practice habe ich mir angewöhnt, entweder zu verketten, root.Find().Find()...... oder komplett rekursiv durchzugehen.
Gruss Peter
Hoi thepixel
<Control>.FindControl(<Id>) sucht nur innerhalb des Controls und geht nicht weiter in den Baum hinein.
Du musst dann entweder mehrere FindControl-Aufrufe miteinander verketten oder auf den Root eine rekursive bzw. iterative Suche starten.
Beispiele einer solchen Implementierung findest du auf meinem Blog:
Gruss Peter
Salute Phil_B
Naja, aber mal eine andere Frage: Wieso benutzt du da überhaupt eine ObjectDataSource?
Die erscheint mir relativ sinnlos, wenn du sowieso nur auf die Session delegierst und dort auch eine Referenz auf System.Web.dll brauchst.
Wieso nicht einfach direkt Laden und Databinding machen?
Gruss Peter
Salute thepixel
Probiere mal folgenden Code:
document.getElementById('<%= <IDDeinesUserControls>.FindControl("tbSessionStartSateTime") %>').value = pStartDateTime;
Klappt dennoch nicht... bekomme aber weder einen Compiler noch einen Javascript Fehler?!
Einen Javascript Fehler müsste kommen, einen Kompilerfehler kann mit deinem Code so gar nicht ausgelöst werden.
Gruss Peter
Hallo Ifoko
Klar geht das dann, aber das ist eigentlich nicht das Problem, wenn ich es richtig verstanden habe.
Gruss Peter
Salute Phil_B
Du solltest eine dedizierte Klasse als Typ bei der ObjectDataSource angeben.
Also nicht das UserControl, sondern bspw. eine PersonManagementDataSource Klasse.
Gruss Peter
Hallo thepixel
Wo steht <%= Control.ClientID %> drin?
Wenn das im ASPX-Teil der Seite steht, müsstest du natürlich FindControl benutzen, um an das Control im UserControl zu kommen.
Skripttags werden auch zur Kompilezeit ausgewertet und ergeben so die Fehlermeldungen.
Gruss Peter
Salute thepixel
Evt. mal das Projekt cleanen und den Ordner "Temporary ASP.NET Files" leeren, falls der Name eigentlich stimmen würde.
Und schau zusätzlich noch hier rein:
Gruss Peter
Hallo thepixel
äh.... ja ok alles klar und was ist daran nun die Neuigkeit? 😉
Öhm, das du "Control" als Namen verwendest und das so natürlich nicht gefunden wird? 😉
Oder bin ich jetzt voll auf dem falschen Dampfer?
Gruss Peter
Hallo #coder#
Entweder nimmst du das ListView und das DataPager Control (System.Web.Extensions.dll / ASP.NET 3.5):
Oder du nutzt die PagedDataSource, die AFAIK in ASP.NET 2.0 schon drin sein sollte:
Gruss Peter
Hallo thepixel
Dann musst du es auch mit diesem Namen ansprechen.
Gruss Peter
Hallo thepixel
Wie heisst denn dein Control?
Gruss Peter
Hallo schuppsl
Ich habs doch oben schon ausgeschrieben 😉.
Schau mal hier, und such einfach danach:
Gruss Peter
Hallo schuppsl
Du musst auch ASP.NET spezifisch suchen, dann findest du schon eine Lösung:
Abgesehen davon, würde ich dir sowieso raten, das Web Application Project (WAP) zu benutzen, und nicht wie bisher das Website-Project.
Dort hättest du diese Probleme nicht mehr und viele Vorteile.
Gruss Peter
Salute KroaX
Einfach einen generischen Parameter für die Methode nehmen,
der Typ sollte dann automatisch erkannt werden.
public void AddUnit<T>(Unit<T> unit);
Allerdings musst du dann intern wissen was T ist,
da ich dein komplettes Szenario nicht kenne, kann ich nur den Rat geben,
evt. auch noch ein untypisiertes Interface hinzuzufügen, damit
du eben nicht immer T wissen muss, wie bspw. bei IEnumerable / IEnumerable<T>.
Gruss Peter
Salute dante
Hier schon geschaut?
Gruss Peter
Hallo Dawamaha
Wenn es serialisierbar ist, bspw. mit dem BinarySerializer.
Gruss Peter
Hallo zusammen
Am Mittwoch dem 11.11.2009 um 19:00 trifft sich der .NET Stammtisch Konstanz-Kreuzlingen wieder in der FH Konstanz, Brauneggerstrasse 55, 78462 Konstanz; Raum F023; Gebäude F.
Infos zur Anfahrt: http://dotnetkk.de/Content/Show/Anfahrt
Das achte .NET-Stammtisch Treffen findet mit Gregor Biswanger und folgendem Thema statt:
TDD / BDD
Ein neues Software Projekt beginnt. Das Design der Architektur steht auch schon. Nun können die hoch motivierten Entwickler starten, ihre Fachbereiche mit Code zu füllen. Doch kommt es schon nach kurzer Zeit zu großen Problemen! Die Anwendung macht an unterschiedlichen Stellen alles andere als das, was gefordert wurde. Keiner kann am Ende sagen woran das liegt, jeder versucht seine Position zu verteidigen. Ist das Projekt nun zum Scheitern verurteilt? Wird nun der Fertigstellungstermin noch weiter nach hinten geschoben, der sowieso schon an der Schmerzgrenze lag?! Nein, durch Test Driven Development kann dieses Problem verringert werden. Damit ist nicht die Fehleranfälligkeit gemeint, sondern das rechtzeitige Erkennen, an welcher Stelle es gerade nicht funktioniert wie es soll.
Einführung in Test Driven Development
Was ist überhaupt TDD? Wie kann ich TDD für neue oder bestehende Projekte richtig nutzen? Welche Arten von Testmöglichkeiten für heutige Softwareprojekte geboten wird, soll auch verdeutlicht werden. Dabei wird einmal die Theorie und anschließend die Praxis genauestens durchleuchtet. Dementsprechend werden dabei folgende Punkte besprochen: Unit-Tests, Integrations-Tests, Akzeptanz-Tests und Mocking.Theorie & Praxis: Code-Coverage
Sehr oft wird beim Schreiben von Codes genau an denn Tests geschrieben, die niemals zu Problemen eintreffen werden. Somit passieren Fehler, die bis heute im Unbekannten weiter leben. Damit diese Horrorvisionen nicht Wirklichkeit wird, spielt die Testabdeckung eine wichtige Rolle!Einführung in Behavior Driven Development
Durch eine Erweiterung von TDD durch Behavior-Driven Development (kurz BDD) werden Tests strukturierter nach den Anforderungen aufgebaut. Hier wird unverkennbar der Kern von TDD für qualitative Softwareprojekte genutzt, und durch die Erweiterung von BDD die funktionalen Anforderungen in den Mittelpunkt gestellt.Über den Sprecher
Gregor Biswanger ist Consultant bei der Firma TRIA IT-solutions in München. Seine Schwerpunkte liegen im Bereich der .NET-Architektur und agilen Prozessen.
Biswanger ist auch freier Autor, Speaker und Microsoft CLIPler der INdotNET (Ingolstädter .NET Developers Group).Verlosung: Fuzzing-Tests für .NET mit CrashTest.Net
CrashTest.Net ist ein Testwerkzeug, das explizit auf .NET-Projekte zugeschnitten ist und eine bisher für das .NET-Umfeld ungenutzte Testmethode verwendet. Bei der Testmethode handelt es sich um Fuzzing. Es hilft Entwicklern ihre Software zu optimieren und zeigt ihnen unbedachte Fälle, die später beim Endnutzer fatale Folgen haben können. Ohne notwendige Einstellungen führt es vollautomatisch eine sehr große Anzahl von Tests an ihrer .NET-Assembly durch. Es versucht alle Methoden mit sehr vielen Parametern auszuführen. Und all das, ohne vorher komplizierte Einstellungen zu vorzunehmen oder im Quellcode irgendwelchen Test-Code zu implementieren. Fuzzing birgt ein sehr großes Potential. Dieses Potential wird der .NET-Welt mit CrashTest.Net einen entscheidenden Schritt näher gebracht.CrashTest.Net unterstützt uns freundlicherweise mit 1 Lizenz zur Verlosung
Anschließend wird wie immer beim gemütlichen Bierchen weiter diskutiert.
Mehr Infos gibts auf der der Stammtisch-Seite.
Gruss Peter
Hallo math55
Schau dazu hier:
Gruss Peter
Hallo math55
Was ist deine Datenquelle?
Eine DataTable?
Gruss Peter
Hallo math55
Wieso sortierst du nicht schon die Datenquelle, das wäre wesentlich einfacher als da gross was drum rum zu bauen.
Gruss Peter
Hallo mcpd
Du solltest erstens mal einen HttpHandler verwenden, siehe dazu:
Dann kannst du entweder Response.TransmitFile() verwenden:
Oder aber du übernimmst das Buffern selber, wie hier zu sehen:
Gruss Peter
Hallo #coder#
Ja, über AJAX. Das Feature nennt sich: Auto Completion / Suggest.
Gruss Peter
Hallo gfoidl
Macht nicht wirklich Sinn, das ist ziemliche Compiler Magic 😕.
LINQ:
var result = from data in Enumerable.Range(0, 10)
let variable = data.ToString()
select variable;
result.ToList().ForEach(Console.WriteLine);
Generiert:
Enumerable.Range(0, 10).Select(delegate (int data) {
return new { data = data, variable = data.ToString() };
}).Select(delegate (<>f__AnonymousType0<int, string> <>h__TransparentIdentifier0) {
return <>h__TransparentIdentifier0.variable;
}).ToList<string>().ForEach(new Action<string>(Console.WriteLine));
Und wieso schreibst du dein Beispiel von oben nicht so?
float maxLength = fooList
.Select(f => g.MeasureString(f.Name, font).Width)
.Max();
😃
Gruss Peter
Hallo sth_Weird
Du hast die Lösung doch schon fast...
Foo foo = fooList.Where(f => f.Name.Length == maxLenght).SingleOrDefault();
Oder halt die Liste holen (Nicht SingleOrDefault) und
nach dem Messen siehst du dann, welche Buchstaben der längsten Strings am meisten Platz benötigen. Das kann ja auch variieren.
Gruss Peter
Hallo meisteralex
Sagt mir bitte nicht, dass immer der Default-Browser gestartet wird.
Ist aber so, wenn du nicht änderst 😉
Gruss Peter
Hallo sth_Weird
Meine Aussage sollte eigentlich sein:
Ja, ich habe Regions früher auch benutzt und geschätzt, aber mit Cleancode braucht man diese schlicht und ergreifend nicht mehr.
Partial Classes werden auch viel missverstanden und missbraucht, diese sind "eigentlich" nur dazu da, um autogenerierten Code von eigenen Änderungen physikalisch zu trennen.
Gruss Peter
[EDIT=herbivore]Nehmt das mal als Schlusswort. Man kann es mit offtopic auch übertreiben.[/EDIT]