Laden...

Zwei serverseitige Formulare auf einer Seite

Erstellt von jonathan vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.162 Views
J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren
Zwei serverseitige Formulare auf einer Seite

Also neues Problem.
Mei Projekt ist so aufgebaut: Links eine Seitenleiste mit treeview, rechts content zu einzelnen punkten.
mit .NET 1.0 hatte ich ein framebasiertes layout und konnte beide seiten mit einzelnen serverseitigen forms abschicken und so die seitenleiste (aktualisiert nach monats ansicht) unabhängig von dem rechts angezeigten serverseitigen form abschicken.
jetzt hab ich alles auf eine masterpage umgestellt und will aber die funktionalität des updatebarem treeview beibehalten ohne das der rechts angezeigte content (ist auch ein formular) mitabgeschickt wird.
wie kann ich das realisieren?

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

P
123 Beiträge seit 2006
vor 18 Jahren

Evtl. würde es klappen 2 forms auf der Seite zu erstellen!

Das eine für den Treeview und das anderen für den Rest.

Bin mir jetzt nicht sicher ob das .Net nicht rummeckert. Einfach mal testen.

Ansonten wirst du nicht darum kummern eine Form für alles zu verwenden. Aber das ist noch nicht schlimm. Auswerten tust du nur das was du brauhst.

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

P
554 Beiträge seit 2005
vor 18 Jahren

Nein, man kann nur ein Formular mit runat="server" pro Seite haben.

Achtung! - Hinter dir ist ein dreiköpfiger Affe!

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

.NET meckert leider bei mehr als einem serverseitigem Formular.
Ich werd's wohl mit ein paar Parametern stopfen und gucken ob ichs hinbekomme.
Vielleicht gibts aber doch noch ne andere Lösung ...

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

W
799 Beiträge seit 2004
vor 18 Jahren

Du brauchst unter ASP.NET eigentlich selten mehr als ein Formular pro Seite, in deinem Fall erst recht nicht. Jeder Button, jedes ChangeEvent usw. usf. rufen eine bestimmte Methode am Server auf. Wenn du im Content jetzt also nen Button klickst, dann bleibt dein Tree davon völlig unberührt, wenn er sauber programmiert ist.

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

ja, das stimmt schon, aber ... also ich erklärs mal genauer:
ich hab nen tree der bestimmte daten aus dem aktuellen monat anzeigt. aber ich kann mit 2 dropdown boxen den monat und das jahr wechseln, dazu muss ich nur einen button der darunterliegt klicken und schon wird der tree verändert.
hab ich jetzt aber nur ein formular, wird die ganze page abgeschickt, der tree wird nicht richtig verändert, die daten im content wechseln zu ner ganz falschen seite und und und ...
wo liegt der fehler?

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

P
123 Beiträge seit 2006
vor 18 Jahren

Das liegt ja an der eigenen Handhabung deines Codes. Baue dies modular auf. sollen heissen in getrennten prozeduren und rufen sie nur bei einem bestimmten event auf!

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

modular ist das ganze aufgebaut, problem ist nur das der button im browser nicht die ihm zugewiesene OnClick="btnApply_Click" Eventmethode ausführt, sonder die ganze seite wieder anschickt ... nix passiert - ausserdem werden die selected values aus den dropdownboxen nicht ausgelesen

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

W
799 Beiträge seit 2004
vor 18 Jahren

Original von jonathan
modular ist das ganze aufgebaut, problem ist nur das der button im browser nicht die ihm zugewiesene OnClick="btnApply_Click" Eventmethode ausführt, sonder die ganze seite wieder anschickt ... nix passiert - ausserdem werden die selected values aus den dropdownboxen nicht ausgelesen

Natürlich schickt der die ganze Seite ab, wie sonst soll denn am Server das (gefakte) Event btnApply_Click aufgerufen werden? So ist der Lauf der Dinge ...

Modular ist in dem Fall so gemeint, dass du nicht sowas machst hier:

Pag_Load()
{
if(Page.IsPostback)
// Change Tree
}

Sondern viel mehr das // Change Tree in eine eigene Methode packst, die du dann gesondert aufrufst!

P
123 Beiträge seit 2006
vor 18 Jahren

Aha und wie hasst du dem Button diese methode mitangegeben?

Etwas so
<asp:button Id="btnApply" Text="senden" onClick="btnApply_Click" runat="server" />

oder im codebehind (vb.net)
Dim WithEvents btnApply as button
Public Sub btnApply_Click(sender as object, e as evenargs) Handles btnApply.Click

Eigentlich sollte er die Werte für die Steuerelemente auslesen, solange du EnableViewState auf true hast, für die page oder das control.

Danach sollte dies funktionienren

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

das die seite komplett neugeladen werden muss ist schon klar (ich hab vor ein paar jahren mit php angefangen) nur hat meine app was völlig falsches getan.

bei mir war alles so wie ihr es gesagt habt, nur enableviewstate war nicht auf true ...

(ps: meine app ist mit c#)

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

button:
<asp:Button CssClass="ready" ID="btnApply" OnClick="btnApply_Click" runat="server" Text="Anwenden" />

method:
protected void btnApply_Click(object sender, EventArgs e)
{
fillTreeList(month.SelectedValue, year.SelectedValue);
}

control:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Sidebar.ascx.cs" Inherits="Sidebar" EnableViewState="true" %>

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

P
123 Beiträge seit 2006
vor 18 Jahren

Mit den Werten in der DDL klappt es jetzt?

Aber er führt deine Prozedur btnApply_Click nicht aus?

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

juhuu ... jetzt klappts wieder. so langsam ist die umstellung auf .NET 2.0 funktionstüchtig ...

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

P
123 Beiträge seit 2006
vor 18 Jahren

aha und woran hat es gelegen?

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

die ganze anwendung ist auf mehrere ascx dateien die über eine aspx gesteuert werden verteilt. das problem war das ich in 3 dieser formularbasierten ascx dateien noch ein paar iritierende dinge im page_load geladen hab. jetzt hab ich alle buttons auf events gestellt und dadurch klappt es jetzt.

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com

P
123 Beiträge seit 2006
vor 18 Jahren

Siehste das programm macht nur, was du ihm sagst 😁

Gruss plongo


Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de

W
799 Beiträge seit 2004
vor 18 Jahren

Original von jonathan
die ganze anwendung ist auf mehrere ascx dateien die über eine aspx gesteuert werden verteilt. das problem war das ich in 3 dieser formularbasierten ascx dateien noch ein paar iritierende dinge im page_load geladen hab. jetzt hab ich alle buttons auf events gestellt und dadurch klappt es jetzt.

Sach ich doch 🙂

Ist halt verwirrend, wenn man von anderen Umgebungen wie ASP oder PHP kommt, sich an das Event-Modell zu gewöhnen. Dazu kommt ja noch, dass es relativ intransparent dahingemanscht ist, denn HTTP bleibt nunmal zustandslos.

J
jonathan Themenstarter:in
29 Beiträge seit 2006
vor 18 Jahren

da hast du recht, ich bin was websachen angeht ziemlich an php gewöhnt (hab ein eigenes cms geschrieben - toendaCMS) aber durch viel entwicklung mit c++, c, c# und vb hab ichs doch geschnallt, trotzdem ist es schon ziemlich gewöhnungsbedürftig ... aber dafür, wenn mans geschnallt hat, einfachen und leistungsfähiger (und durch c# spassiger) ...

jonathan naumann | software developer | +49 160 221 79 93
vandango.org | toenda.com | jonathan@toenda.com