Laden...
Avatar #avatar-2678.jpg
Tomot myCSharp.de - Member
Junior-Softwaredeveloper C# und ASP.Net Düsseldorf Dabei seit 21.12.2007 691 Beiträge
Benutzerbeschreibung

Forenbeiträge von Tomot Ingesamt 691 Beiträge

11.01.2011 - 22:38 Uhr

Sowas löst man durch JOIN Sstatements und nicht durch FK´s.

Könntest du das ausführlicher begründen? Siehst du Performanceprobleme oder wieso ist referenzielle Integrität hier nicht erforderlich?

Bedenke aber das Access nicht Multiuserfähig ist und eine Webanwendung nun mal per Definition Multiusersoftware ist.

Also ich habe schon eine Anwendung gesehen, bei der ca 40 Benutzer mit der gleichen Winformsanwendung auf eine Access-Datenbank zugreifen und gleichzeitig noch Informationen über einen Webservice an eine ASP.Net bereitgestellt werden. Funktioniert soweit, jedoch würde ich bei einer Neuentwicklung sowieso auf MSSQL und nicht mehr auf Access setzen.

Ich meine irgendwo gelesen zu haben, das Microsoft als Obergrenze für parallele Zugriffe 10 Applikationen, die auf die gleiche Accessdatei zugreifen angibt. Leider kann ich diese Aussage nicht mit einer Quelle verlinken

11.01.2011 - 22:30 Uhr

Sofern du keinen generischen Handler verwenden möchstest, kannst du in einem dafür angelegten Verzeichnis pro User ein Verzeichnis erstellen, in das die Dateien aus der Datenbank kopiert werden. Quasi als temporäres Verzeichnis. Anhand des Erstellungsdatum der temporären Ordner der User kannst du somit alte Session ermitteln und die Ordner einfach löschen.

Ist eine Lösung, die in der Praxis funktioniert und bislang keine Probleme aufgezeigt hat. (In zwei realen Projekten im Einsatz) Setzt natürlich entsprechende Schreibrechte auf die Ordner/Dateien voraus.

30.12.2010 - 23:42 Uhr

Hallo,
bitte beachte in Zukunft [Hinweis] Wie poste ich richtig? Punkt 2.2

28.12.2010 - 17:13 Uhr

Bau mal einen div-Container rum, gib ihm eine feste Breite und setze
margin-left: auto;
margin-right: auto;

und probier dein Glück

29.11.2010 - 21:11 Uhr

Dann wähle ich in der DDL einen Eintrag aus und drücke auf einen Button

Alternativ, falls du den Query wirklich nur in Abhängigkeit von dem ausgewählten Wert hast, die AutoPostBack Property auf true setzen und im OnSelectedIndexChanged Event die Daten neu binden

15.11.2010 - 20:26 Uhr

Wie startest du die Webanwendung lokal? Läuft sie im Cassini oder auf deinem lokalen IIS?

Hast du die Delphi-DLL auf dem gleichen Rechner erstellt? Eventuell wird der Zugriff auf die DLL geblockt, wenn sie von einem anderen Rechner kommt. Rechtsklick -> Eigenschaften und mal schauen ob dort da was zu steht

15.11.2010 - 20:11 Uhr

Verwende Caching auf der ApplicationEbene (falls das applikationsweise möglich ist) bzw Caching auf Sessionebene um teure Datenbankabfragen zu vermeiden. Beim vom ASP.Net eingebaute Caching kannst du direkt eine Cacheduration mit angeben, d.h. wenn etwas noch im Cache ist wird es daraus genommen, andersfalls neu berechnet.

10.11.2010 - 19:08 Uhr

genau dafür gibt es Versionsverwaltungen

Wie wahr, wie wahr.

Aber für Projekte die in 5h runtergehackt sind richt ich mir das auch nicht immer ein. Außerdem finde ich diese "safe" Löschmethode allgemein praktisch.

Dann nimm ein Sammelrepository

03.11.2010 - 12:07 Uhr

Du musst noch explizit über ein Attribut angeben, du das ein Config Transform für einen bestimmten Abschnitt ausführen willst.

Normale web.config

   <connectionStrings>
        <add  name="MyDBEntities" connectionString="PlaceHolder" providerName="System.Data.EntityClient" />
    </connectionStrings>

web.xxx.config:

<connectionStrings xdt:Transform="Replace">
        <add
            name="MyDBEntities"
            connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\SQLEXPRESS;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True&quot;"
            xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Match(name)"
            />
    </connectionStrings>

Beachte, du das momentan unter VS2010 Probleme bekommst, wenn du XML Nodes ersetzt, in denen die Werte zwischen den Tags und nicht innerhalb von Attributen ersetzt. Bei ersetzen werden nämlich überflüssige Whitespaces oder Linebreaks hinzugefügt. So z.B. beim Ersetzen von den vom Designer ApplicationSettings generierten Properties.
Es wurde seitens Microsoft angekündigt mit VS2010 SP1 diesen Fehler zum beheben.

D.h. die im Designer generierten Properties lassen sich bei VS2010 nicht mit config Transforms ersetzen, ohne dabei eventuell auf Laufzeitfehler zu kommen. (z.B: Emailadressen oder Pfadangaben mit Linebreaks machen keinen Sinn). Um trotzdem Settings zu ersetzen kann man jedoch das ältere appSettings Modell nehmen und sich selber eine Wrapperklasse schreiben, um typisiert auf die appSettings zuzugreifen:

Beispiel:

  <appSettings>
    <add key="Testenvironment" value="true"/>
  </appSettings>

In der Release.config

  <appSettings xdt:Transform="Replace">
    <add key="TestEnvironment" value="false"/>
  </appSettings>
   public class AppSettingsWrapper
    {

        public static bool Testenvironment
        {
            get { return bool.Parse(ConfigurationManager.AppSettings["Testenvironment"].ToString()); }
        }
  }
18.10.2010 - 20:36 Uhr

Ich bin mir relativ sicher, einen Thread zu genau dem Thema hier mal gesehn zu haben. Benutze mal die Suchfunktion

12.10.2010 - 21:38 Uhr

Und für jemand der sich den Quellcode einmal angeguckt hat leicht zu automatisieren. Die Frage ist auch, wie sich screenreader bei sowas verhalten. Von daher kannst du sowas im Quellcode nur linear haben

11.10.2010 - 22:40 Uhr

Ich schaue mir das Control mal an. Hatte mich bis jetzt noch nie mit Ajax auseinandergesetzt, da ich schon ein paar mal mit Javascript meine schlechten erfahrungen gemacht hatte, aber Ajax ja Javascript extesiv einsetzt und voraussetzt.

Du musst hier kaum was machen. Nur die DLL runterladen, ins Projekt einbinden, referenzieren, den Namespace ins Markup einbinden und ganz normal das Control zuhinfügen.

Zusätzlich wird dann statt dem Skriptmanager auf der Seite der AjaxToolSkriptManager benötigt, aber das ist auch nur eine Zeile auf der MasterPage, die du ändern musst. Einbau also unter 5 Minuten

11.10.2010 - 09:44 Uhr

Meine Idee dazu, um auf ein Captcha verzichten zu können:1.Ein Hiddenfeld machen, mit einer Guid drinne. Diese Guid auch in der Session speichern. 1.Ein DateTime in der Session speichern. 1.Im Postback dann die Guid aus dem Hiddenfeld gegen die Guid in der Session prüfen. Gleichzeitig auch mit dem DateTime aus der Session prüfen, ob da eine mindestspanne dazwischen liegt. Hintergrund ist dabei, das ein User ja eine gewisse Zeit benötigt, um da eingaben in den Feldern zu schreiben, aber ein Spamserver das ja innerhalb weniger Sekunden macht.

Meine Meinung ist, das du dir die Mühe nicht machen musst, das selber zu machen. Probier das NoBot Control vom AjaxControlToolkit aus. Da haste so Properties wie Mindestzeit zum Ausfüllen, Anzahl an Requests pro IP und so Sachen. http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/NoBot/NoBot.aspx

08.10.2010 - 19:10 Uhr

Ich finde
>
nicht schlecht.

Wenn ich das richtig gesehn habe, gibts da nur Windows 2003 Server. Je nachdem was der Geldbeutel sagt, würde ich zu nem 2008er R2 raten

08.10.2010 - 11:14 Uhr

Gestern ging es noch und heute escaped er das Hochkomma....

Hast du was am Encoding der Page geändert?

08.10.2010 - 10:22 Uhr

Das hat was mit dem Zeitpunkt zu tun, wann der ViewState wieder hergestellt wird. Vor diesem Zeitpunkt musst du das Control wieder erstellen. ASP.Net geht hin und weißt dann dem neuerstellten Control, sofern es den gleichen Namen hat, die entsprechenden Eigenschaften und ausgelöste Events zu.

Dementsprechend funktioniert es nicht, wenn du das Control zu einem späteren Zeitpunkt erstellt.

08.10.2010 - 10:11 Uhr

Du kannst einen zweiten Timer nehmen, der den ersten startet.

Wenn du z.b. auf einen Knopf drückst, der das Starten auslösen soll, dann berechnest du die Zeit bis zu den nächsten zehn Minuten und startest einen Hilfstimer, dessen Interval du auf diese Differenz setzt. Im TickEvent startest du dann deinen eigentlichen Timer

04.10.2010 - 19:49 Uhr

Du meinst also z.b. als string?!

Z.B. als eigene Klasse, wobei da der Aufwand vermutlich nicht lohnt. Je nach Einsatzszenario eben.

Ansonsten ab .net Framework 4 die Tuple Klasse benutzen

04.10.2010 - 19:48 Uhr

Hatte gehofft, das es hier was sinnvolles gibt ala Checkbox-Gruppierung, nur halt mit c#-Code.

Was war denn an meinem Post nicht zu gebrauchen?

04.10.2010 - 08:30 Uhr

Hallo herbivore,

da [...] Application.ProductName und Application.ProductVersion verwendet werden, haben Debug- und Release-Version unterschiedliche IDs.

könntest du bitte genauer erläutern, was du mit unterschiedlichen IDs meinst? Für mich sind ProductName und ProductVersion zwei Assembly Attribute in der AssemblyInfo.cs, wobei ProductName ein String ist und die Version (MSDN) ebenfalls.

Inwiefern ändert sich hier was bei der Build-Konfiguration?

02.10.2010 - 14:06 Uhr

Ah ok, dank dir, wieder mal was gelernt =)

02.10.2010 - 12:05 Uhr

Versuchs mal mit

url(/IMAGEPATH)

(Ich gehe von einem Web Application Project aus)

Wenn du Pfadprobleme bei Bilder hast, dann kann ich dir nur empfehlen mit Firebug zur Laufzeit diverse Pfade auszuprobieren. Du merkst ja dann, wenn du den richtigen gefunden hast

01.10.2010 - 17:27 Uhr

Hallo.

[FAQ] Kommunikation von 2 Forms und die dort verlinkten Themen sollten dir einen Überblick über die Beziehung von Objekten verschaffen und Pro/Contra Punkte dafür nennen, inwiefern es Sinn macht, dass deine Spielfigur auf den Spieler zugreifen darf

01.10.2010 - 14:02 Uhr

War keine Exception. 😃 Hmm, auch gut 😉

Hab das Problem nun durch eine Asynchrone Initialisierung behoben.

Wie bist du denn darauf gekommen? Wie bist du beim Debugging vorgegangen? Wieso gibt es bei der synchronen Initialisierung Probleme? Wenn der Service nicht startet, müsste es doch entweder eine Exception oder ein Timeout geben?

01.10.2010 - 12:00 Uhr

In dem Dienst wird eine Exception geschmissen, die nicht abgefangen wird. Standardgemäß müsste diese Exception im Windows-EventLog stehen. Schau dort mal nach

01.10.2010 - 11:58 Uhr

Der von dir gepostete Code ist fehlerfrei. Der Fehler muss außerhalb liegen.

Nach kurzem Googeln habe ich mehrfach von Problemen mit Resharper in Bezug auf diese Fehlermeldung gelesen. Hast du Resharper installiert?

30.09.2010 - 23:38 Uhr

ihr werdet sicher am Code schon erkennen, das funktioniert so nicht, denn labels.Length ist immer 10; Welche Eigenschaft oder Funktion liefert mir den letzten Array-Index?

int i = labels.Length - 1;

?

Deine Frage lässt jedoch suggerieren, das die Anzahl der verwalteten Elemente unbekannt ist. Du könntest natürlich nun einen großen Array erstellen, und dir in einer Variable merken, wie viele Elemente du in den Array gepackt hast.
Da ist der von gfoidl erwähnte Ansatz einer List besser, da dir all diese Arbeit abgenommen wird und sich die Größe der Liste dynamisch an die Anzahl der beinhalteten Objekte anpasst

30.09.2010 - 23:11 Uhr
  1. Frage: Gibt es ein Tool, dass die einzelnen Tracks erkennt und mir auch gleich automatisch schneidet? Also die Tracks sind aber nicht eindeutig hörbar voneinander getrennt. Sie sind meistens ineinander gemixt

Ich verwende dafür ClipInc. (Der Produktname wurde inzwischen auf Radio.fx geändert, les ich grad). http://de.wikipedia.org/wiki/Radio.fx

Das Programm schneidet Streams mit, setzt verschiedbare Schnittpunkte zwischen den Tracks (sofern der Stream ein gewisses Tagformat bereitstellt) und bietet eine einfache Exportfunktion nach MP3.

30.09.2010 - 12:32 Uhr

Hallo.

Schau dir mal mit dem Quickwatch die Properties von htmlDoc an, eventuell hilft dir das

28.09.2010 - 11:01 Uhr

Oder die min-width property auf das entsprechende Containerelement setzen.

Ein schönes Beispiel für das Benutzen von min-width ist der Blog von Scott Hanselman. http://www.hanselman.com/blog/

27.09.2010 - 17:24 Uhr

Ich vermute dieser Thread ist im Windows.Forms Forum besser aufgehoben. Nichts destotrotz solltest du, wie MarsStein schon sagte, dein Problem, dein Ziel und deine Lösungsansatze ausführlicher darstellen.

27.09.2010 - 17:23 Uhr

Oder in etwas einfacheren Worten: Erstelle deine DropDown und setze die CSS Visibility auf hidden.

Nun kannst du per JavaScript dafür sorgen, das die Visibility wieder auf sichtbar gesetzt wird. Das kannst du z.b. mit einem Document OnLoad / OnReady (oder wie das auch immer heißt) Event machen, das dir JQuery anbietet.

24.09.2010 - 18:11 Uhr

Wir wir alles wissen sind ASP.NET Seiten beim Firefox extrem langsam, wenn IPv6 eingeschaltet ist.

Ich gehöre nicht zu denjenigen, die das wissen. Habe ich bislang noch nicht ausprobiert. Hast du noch andere Quellen als deine Aussage? Wenn ich nach "asp.net ipv6 firefox" google, dann ist dieser Thread auf platz 2.

http://weblogs.asp.net/dwahlin/archive/2007/06/17/fixing-firefox-slowness-with-localhost-on-vista.aspx Hier wird nur vom localhost berichtet

20.09.2010 - 17:02 Uhr

Ungetestet:

string foo = string.Empty;

for (int i = 0; i < Erreger.Length; i++)
{
    TextBox tb = new TextBox();
    StringBuilder sb = new StringBuilder();
    using(StringWriter tw = new StringWriter(sb))
    {
        using(HtmlTextWriter w = new HtmlTextWriter(tw))
        {
          tb.Rendercontrol(w);
         }
     }
   tb.ID = "tb" + i;
  foo += String.Format("<tr><td>{0}</td></tr>", sb.ToString());
}

Literal1.Text = foo;
20.09.2010 - 16:55 Uhr

Ist bei deinem div das runat="server" Attribut gesetzt? Wenn ja, dann schau dir mal die gerenderte ID des divs an. Du greifst nämlich mit getElementById drauf zu. Alternativ schau dir mal die JQuery Selektoren aus dem Jquery Framework an

20.09.2010 - 11:35 Uhr

Öffne eine Startleiste und suche die entsprechende Verknüpfung für die geplanten Tasks. Rechtsklick drauf und die weißt wie die Anwendung unter XP heißt

20.09.2010 - 11:29 Uhr

So wie du das geschrieben hast, brauchst du nur den Befehl den du in der Kommandazeile auführen willst.

taskschd.msc

Ist der entsprechende Befehle, der in der Kommandezeile eingegeben werden muss.

Wenn dir das nicht geholfen hat, dann musst du mit der Aufgabenstellung konkreter werden

18.09.2010 - 10:15 Uhr

Hast du auf deiner Seite einen ScriptManager bzw auf der MasterPage einen ScriptManager und auf der Contentseite einen ScriptManagerProxy eingebaut?

16.09.2010 - 09:33 Uhr

Es ist auf jeden Fall möglich Bilder aus einem byte[] wieder in einem GridView anzuzeigen.

Ich habe das bisher immer mit einem <asp:Image> in einem TemplateField des GridViews gemacht. Das ImageControl musst beim Bild auf einem Pfad verweisen und unterstützt (meines Erachtens nach) nicht die Zuweisung eines byte[].

Mir fallen da gerade zwei Optionen ein:

  • Das Bild irgendwie temporär im Dateisystem zwischenspeichern
  • Dir einen gerischen Handler (*.ashx) bauen, der dir das entsprechende Bild zurückgibt. Das ist die von mir bevorzugte Lösung. Vorgehensweise wäre hier einen generischen Handler dem Projekt hinzuzufügen, und ihn parameterisiert über eine URL aufzurufen. Die URL kann z.B. der Primärschlüssel des Datensatzes sein, in dem der byte[] ist. In dem Response des generischen Handlers würdest du die Bytes vom dem byte[] schreiben. Wie das codetechnisch konkret aussiehst lässt sich per Google feststellen.
15.09.2010 - 19:03 Uhr

Ich nehme an, das deine Zahlen zwischen 0 und 255 liegen, also 8 Bit lang sind.

	public void RunSnippet()
	{
		byte[] bytes = new byte[] { 0x07, 0xA1, 0x20};
		String hexString = string.Format("0X{0}", Foo(bytes).ToString("X").PadLeft(bytes.Length * 2, '0'));
		Console.WriteLine(hexString);
	}
	
	private int Foo(byte[] array)
	{
		int result = 0x0;
		foreach(byte item in array)
		{
			result = (result << 8) | item;
		}
		return result;
	}

Standard Numeric Format Strings hilft dir vielleicht auch weiter.

15.09.2010 - 18:41 Uhr

Dafür besitzen das GridView und die ObjectDataSource eine DataBind Methode.

Das schliessen des lässt die Seite neu Laden in der Hoffnung die aktualisierten Daten anzuzeigen.

Führen bei dem dortigen EventHandler ein .DataBind() auf die DataSource und danach noch einmal ein DataBind() auf das GridView aus. Dann hast du das erstrebte Verhalten.

Das Bind mache ich nun jeweils im Page_Load hinter einer if(IsPostBack) Klausel.

Das ist eine weitere Fehlerquelle. Die EventHandler der Controls werden erst nach dem Page_Load ausgeführt, sodass bei einem erneuten Binden der Daten die Events der Controls verschluckt werden können.

Mache stattdessen ein initiales Datenbinding im PageLoad:

if(!Page.IsPostback)
{
   // ods.SelectParameters["asd"].DefaultValue = "asd";
   ods.DataBind();
   grid.DataBind();
}

In den entsprechenden (serverseitigen) EventHandlern veranlasst du dann ein manuelles

grid.DataBind()
14.09.2010 - 16:38 Uhr

Ich übergebe ja auch nur Objekte, die dieses Feld besitzen - nur .NET traut mir leider so viel Intelligenz nicht zu. 😦Gruß

Dafür gibt es z.b. Interfaces.

13.09.2010 - 19:37 Uhr

Wenn ich bigeddie richtig verstanden habe, wollte er genau das eben nicht tun, sonst geht's ja auch mit dem SelectedIndex 😉

Hmm stimmt. Irgendwie hab ich in letzter Zeit bei den Fragen im Webbereich Probleme die Intention des Threaderstellers zu erkennen. Ein gutes Beispiel dafür ist auch dieser Thread hier. Liegt das Problem nur bei mir?

13.09.2010 - 19:33 Uhr

Irgendwie schein Webdesigner ich kein gutes Händchen für nen Webdesigner zu haben. Fürs ein meiner Projekte hatte ich einen gefunden, der mir nach einigen Korrekturdurchläufen ein sehr gutes Design gemacht hatte. Bei der Umsetzung vom Design in HTML/CSS bekam ich ein Tabellendesign abgeliefert. Nach meinem Kommentar, das ich doch gerne ein Layout mit div-Container hätte, habe ich vom Webdesigner nichts mehr gehört. Das ist nun schon über 2 Wochen her. Nicht grad professionell.

Wie sieht das in solch einer Situation eigentlich rechtlich aus? Ich würde mir nun für das Projekt entsprechend einen neuen Designer suchen, aber bis wann muss ich zahlen, sollte der erste Webdesigner doch noch sein Produkt abliefern?

13.09.2010 - 19:03 Uhr

Ich hab das jetzt nur grob überflogen, hab mir da nen Account gemacht, aber mir ist nun überhaupt nicht klar, was ich hacken soll.

Bei nem kurzen Blick auf den Quellcode konnte ich nur festellen, das ich beim Refreshbutton das Javascript verändern kannte, um beliebigen HTML Code anzeigen zu lassen. Ich habe z.B. das Bild von einem Käse rendern lassen.

Und weiter?

13.09.2010 - 18:51 Uhr

... "DataBound"-Event jedem Listitem in den Attributen das Element der generischen Liste mitgeben zu können, an welches es gebunden ist, oder würde das den Overhead sehr aufblähen?

Dafür ist doch der Value eines ListItems da. Sorge einfach dafür, das dieser insofern unique ist, als das du aus diesem String wieder konrekt ein Item aus der Businessschicht anfordern kannst

13.09.2010 - 18:49 Uhr

Ich bin mir grad nicht sicher, ob eine Column Visible sein muss, damit man nach serverseitig nach ihr sortieren muss. Falls das nicht der Fall ist, dann binde doch das Datum in eine unsichtbare Spalte, und greif beim OnSorting Event des Grids ein um entsprechend nicht nach der String Spalte, sondern nach der Value Spalte zu sortieren