2009-04-07 3 views
1

Ich arbeite an einer .net (C#) Webanwendung.Code denkt, dass Datagrid footer textbox leer ist

Kürzlich kam ein Fehler auf meinen Weg, der besagt, dass, wenn zwei Benutzer zur gleichen Zeit in der Anwendung angemeldet wurden, beide Werte nicht aktualisiert werden konnten, ohne dass die Seite aktualisiert wurde. Als ich das Problem untersuchte, entdeckte ich, dass der Autor des Codes statische Datensätze verwendet hat. Ich habe die Datensätze geändert, um nicht statisch zu sein, und alles funktioniert großartig.

Allerdings erstreckt sich dieses Problem über viele Seiten in der Anwendung und ich muss es überall beheben. Auf einigen dieser Seiten verwendet die Anwendung Datasets, um Daten an Datagrids zu binden. Die Datagrids werden mit den Informationen im Dataset gefüllt und die Fußzeile enthält einige Textfelder und eine Schaltfläche zum Hinzufügen zusätzlicher Zeilen. Hier beginnt das Problem:

Wenn die Seite statische Datasets verwendete und der Benutzer versuchte, eine Zeile über die Schnittstelle hinzuzufügen, funktionierte alles einwandfrei. Wenn ich ihn jedoch ändere, um Datasets zu verwenden, die nicht statisch waren (sie werden jedes Mal geladen, wenn die Seite geladen wird) und der Benutzer versucht, eine Zeile hinzuzufügen, denkt der Code, dass das Textfeld leer ist (beim Debuggen entdeckt, obwohl ich die Text, den ich eingegeben habe) und die Validierung des leeren Feldes schlägt fehl und eine Nachricht wird angezeigt.

Kann mir bitte jemand sagen, warum auf der Erde das passiert? Warum sieht es den Text, wenn das Dataset statisch ist (das Dataset füllt NIE die Fußzeile auf) und den Text nicht sehen, wenn er nicht statisch ist? Ein Einblick wäre großartig!

Vielen Dank im Voraus!

Antwort

2

Es stellte sich heraus, dass ein Problem mit der Bindung des Gitters bestand.

Die Bindung trat auf, als die Datasets instanziiert wurden. Dies bedeutet, dass jedes Mal, wenn die Seite geladen wird, die Bindung erneut auftritt und der Text leer ist. Das ist seltsam, wenn man bedenkt, dass der item-Befehl so aussah, als ob er vor dem Laden der Seite ausgeführt würde, aber das Datagrid mochte es trotzdem nicht. Ich bin dorthin gezogen, wo die Bindung stattfand, so dass es nur einmal passiert, wenn die Seite geladen wird (und natürlich passiert es, wenn etwas zum Gitter hinzugefügt wird).

Dies schien den Trick zu tun!

Verwandte Themen