AutoPostBack funktioniert nach einfügen eines Buttons nicht mehr...

aquasonic

Erfahrenes Mitglied
Guten morgen zusammen,

Ich habe ein ASP.NET Formular, welches ich mit Radioboxen und Textboxen ausgestattet habe. Je nachdem welche Radioboxen man anklickst sollen jetzt gewisse Textboxen auf Enabled = false gesetzt werden. Dazu benütze ich die Eigenschaft AutoPostBack = "True" und führe dann den entsprechenden Code hinzu.

Dies funktioniert auch alles einwandfrei. Füge ich aber nun am Ende des Formulars eine Button ein so funktioniert das AutoPostBack der Radioboxen nicht mehr...Nehme ich den Button wieder raus funnktioniert es wieder...Was mache ich falsch

Hier einige Codeausschnitte:

PHP:
<asp:RadioButton id="ext" runat="server" Checked="True" GroupName="domainart" AutoPostBack="True"></asp:RadioButton>
Externe Domain
<asp:RadioButton id="admin" runat="server" Checked="False" GroupName="domainart" AutoPostBack="True"></asp:RadioButton>Interne 
Domain

<asp:Button ID="submit" Runat="server" Text="Antrag abschicken"></asp:Button>

Und dann der C# Code:
PHP:
private void InitializeComponent()
   {    
      this.ext.CheckedChanged += new System.EventHandler(this.ext_CheckedChanged);
      this.admin.CheckedChanged += new System.EventHandler(this.admin_CheckedChanged);
      this.Load += new System.EventHandler(this.Page_Load);
   }

private void ext_CheckedChanged(object sender, System.EventArgs e)
   {
      infosunten.Visible = true;
      begruendung.Enabled = false;
   }

private void admin_CheckedChanged(object sender, System.EventArgs e)
   {
      infosunten.Visible = false;
      begruendung.Enabled = true;
   }
 
Hallo aquasonic,

da hast du ja echt ein misterieuses Problem. Ich weiß auch nicht woran es liegen kann, aber ich hätte eine Idee was du mal ausprobieren kannst.

Du hast in deiner ASPX-Seite sicherlich ein AutoEventWireup=false drin, oder?

Code:
<%@ Page Inherits="irgendwas" AutoEventWireup="false" %>


Ich habe hier mal einen Ausschnitt, aus der SDK-Doku des Frameworks.

Das ASP.NET-Seitengerüst unterstützt auch eine Möglichkeit, Seitenereignisse und -methoden automatisch zuzuordnen. Wenn das AutoEventWireup-Attribut der Page-Direktive auf true festgelegt ist (oder fehlt, weil es standardmäßig true lautet), ruft das Seitengerüst automatisch Seitenereignisse auf, insbesondere die Methoden Page_Init und Page_Load. In diesem Fall ist keine explizite Handles-Klausel oder kein Delegat erforderlich.

Setz doch einfach mal das AutoEventWireup auf true, bzw. lass es ganz weg. Dann schreibst du folgendes in deinen Code:


Code:
<asp:RadioButton id="ext" runat="server" Checked="True" GroupName="domainart" AutoPostBack="True" OnCheckedChanged="ext_CheckedChanged"></asp:RadioButton> 
Externe Domain 
<asp:RadioButton id="admin" runat="server" Checked="False" GroupName="domainart" AutoPostBack="True" OnCheckedChanged="admin_CheckedChanged"></asp:RadioButton>Interne 
Domain 

<asp:Button ID="submit" Runat="server" Text="Antrag abschicken"></asp:Button>

und die Funktion InitializeComponent() lässt du einfach weg


ciao Anke
 
Vielen Dank für deine Antwort. Leider funktioniert auch das nicht :-( Er gibt mir dann eine Fehlermeldung (unten Links im Browser --> JavaScript Fehlermeldung) und sagt mir das das Objekt die Methode oder Eigenschaft nicht unterstüzte...

Folgendes JavaScript gibt die Fehlermeldung:

PHP:
<script language="javascript">
<!--
	function __doPostBack(eventTarget, eventArgument) {
		var theform;
		if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
			theform = document.forms["Form2"];
		}
		else {
			theform = document.Form2;
		}
		theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
		theform.__EVENTARGUMENT.value = eventArgument;
		theform.submit();
	}
// -->
</script>

Dies habe ich meiner Meinung nach nicht selber geschrieben ;) Es postet aber leider das Formular immer noch nicht zurück...Was kann ich sonst noch ausprobieren
 
Ich konnte es jetzt so lösen das ich einfach einen normalen Button hingemacht habe:

Code:
<input type="button" onclick="document.Form2.submit();" value="Antrag abschicken">

Einen Hacken hat es jedoch...Ich kann dem Button keinen Namen geben...Ich kann auch keine zusätzlichen HIDDEN-Felder oder so machen...Jetzt weiss ich natürlich nicht ob das Formular via RadioBox oder via SubmitButton abgeschickt wurde...Der Weiteren muss das Formular über POST verschickt werden, GET geht nicht...Ist nicht so optimal die Lösung...
 
Zuletzt bearbeitet:
Kannst du bitte mal deinen Code posten? Vielleicht sehe ich ja was? Also den kompletten Code, wenn es geht, dann kann ich es mal bei mir testen...


ciao Anke
 
ASP.net File:

PHP:
<%@ Page language="c#" Codebehind="formular_neu.aspx.cs" AutoEventWireup="false" Inherits="DomAdm.formular_neu" buffer="True"%>
<%@ Register TagPrefix="inc1" TagName="header" Src="_head_infos.ascx" %>
<%@ Register TagPrefix="inc2" TagName="header" Src="_header.ascx" %>
<%@ Register TagPrefix="inc3" TagName="header" Src="_navigation.ascx" %>
<%@ Register TagPrefix="inc4" TagName="header" Src="_footer.ascx" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
  <inc1:header id="Header1" runat="server"></inc1:header>
  <body ms_positioning="gridlayout" text="#000000" vlink="#000000" alink="#333333" link="#000000" bgcolor="#ffffff" leftmargin="0" topmargin="0">
    <form id="Form2" method="post" runat="server">
		<inc2:header id="Header2" runat="server"></inc2:header>
					<inc3:header id="Header3" runat="server"></inc3:header>
				</td>
				<td height="100%" align="left" valign="top" width="10" bgcolor="#ffffff" class="bg_ch2">&nbsp;</td>
				<td height="100%" align="left" valign="top" bgcolor="#ffffff" class="bg_ch3">
					<table width="100%" border="0" cellspacing="0" cellpadding="0" background="img/sys_dikvbs/t_bg.gif">
						<tr>
							<td>
								<table width="100%" border="0" cellspacing="0" cellpadding="0">
									<tr>
										<td class="title1" align="left" valign="bottom" height="40" nowrap>
											<asp:Label id="lblTitel1" runat="server"></asp:Label>
										</td>
									</tr>
									<tr>
										<td class="title2" nowrap>
											Domainantrag verfassen
										</td>
									</tr>
								</table>
							</td>
						</tr>
					</table><br>
					<table width="100%" border="0" cellspacing="0" cellpadding="0">
						<tr>
							<td width="90">&nbsp;</td>
							<td>
								<table width="100%" border="0" cellspacing="0" cellpadding="0">
									<tr>
										<td class="table"><asp:Label ID="lblError" Runat="server"></asp:Label></td>
									</tr>
									<tr>
										<td class="table"><b>Domänenname</b>
											<table width="100%" class="table">
												<tr>
													<td width="10%" valign="top">Hinweise:</td>
													<td>
														
													</td>
												</tr>
											</table>
										</td>
									</tr>
									<tr>
										<td class="table_solid_2px" align="left" valign="top">
											<table width="100%" cellpadding="0" cellspacing="0" border="0">
												<tr height="18" class="table_solid_2px">
													<td bgcolor="#eeeee4">
														Domainart:
													</td>
													<td height="30">
														<asp:RadioButton id="ext" Text="Externe Domain (z.B. www.xx.ch)" runat="server" Checked="True" GroupName="domainart" AutoPostBack="True"></asp:RadioButton>
														<asp:RadioButton id="admin" Text="Interne Domain (z.B. www.xx.admin.ch)" runat="server" Checked="False" GroupName="domainart" AutoPostBack="True"></asp:RadioButton>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4">
														Art der Website:
													</td>
													<td height="30">
														<asp:RadioButton id="cms" Text="Communiqueé" runat="server" Checked="True" GroupName="siteart"></asp:RadioButton>
														<asp:RadioButton id="free" Text="eigener Webspace" runat="server" Checked="False" GroupName="siteart"></asp:RadioButton>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Domainname:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="domainname" Runat="server" Width="99%"></asp:TextBox>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Weiterleitung auf folgende Adresse:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="weiterleitung" Runat="server" Width="99%"></asp:TextBox>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Begründung:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="begruendung" Runat="server" Width="99%" Enabled="false"></asp:TextBox>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Registrierung:
													</td>
													<td height="30">
														<asp:RadioButton id="aktiv" Text="aktiv" runat="server" Checked="True" GroupName="status" AutoPostBack="True"></asp:RadioButton>
														<asp:RadioButton id="inaktiv" Text="inaktiv (nur reservieren)" runat="server" Checked="False" GroupName="status" AutoPostBack="True"></asp:RadioButton>
														<asp:RadioButton id="loeschen" Text="löschen" runat="server" Checked="False" GroupName="status" AutoPostBack="True"></asp:RadioButton>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Gewünscher Termin:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="tag" Runat="server" Width="25px" MaxLength="2"></asp:TextBox>
														.
														<asp:TextBox ID="monat" Runat="server" Width="25px" MaxLength="2"></asp:TextBox>
														.
														<asp:TextBox ID="jahr" Runat="server" Width="50px" MaxLength="4"></asp:TextBox>
														Für "sofort" Felder leer lassen (Format: TT.MM.JJJJ)
													</td>
												</tr>
											</table>
										</td>
									</tr>
									<tr>
										<td class="table_solid_2px" align="left" valign="top">&nbsp;</td>
									</tr>
									<tr>
										<td>&nbsp;</td>
									</tr>
									<tr>
										<td class="table"><b>"Billing contact" bei SWITCH (Rechnungsadressat)</b></td>
									</tr>
									<tr>
										<td class="table_solid_2px" align="left" valign="top">
											<table width="100%" cellpadding="0" cellspacing="0" border="0">
												<tr height="18" class="table_solid_2px">
													<td bgcolor="#eeeee4">
														SWITCH User ID:
													</td>
													<td height="30">
														<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
															<tr height="18" class="table">
																<td width="25%">
																	&nbsp;<asp:TextBox ID="billing_userid" Runat="server" Width="99%"></asp:TextBox>
																</td>
																<td width="75%">
																	&nbsp;(Falls diese von frühereren Registrierungen her bereits vorhanden ist.)
																</td>
															</tr>
														</table>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4">
														Organisation / Name:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="billing_name" Runat="server" Width="99%"></asp:TextBox>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Strasse:
													</td>
													<td height="30">
														&nbsp;<asp:TextBox ID="billing_strasse" Runat="server" Width="99%"></asp:TextBox>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														PLZ:
													</td>
													<td height="30">
														<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
															<tr height="18" class="table">
																<td width="25%">
																	&nbsp;<asp:TextBox ID="billing_plz" Runat="server" Width="97%"></asp:TextBox>
																</td>
																<td bgcolor="#eeeee4" width="15%" class="table_solid_1px">
																	&nbsp;Ort:
																</td>
																<td width="60%">
																	&nbsp;<asp:TextBox ID="billing_ort" Runat="server" Width="98.5%"></asp:TextBox>
																</td>
															</tr>
														</table>
													</td>
												</tr>
												<tr height="18" class="table_solid_1px">
													<td bgcolor="#eeeee4" width="140" height="30">
														Telefon Nr.:
													</td>
													<td height="30">
														<table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
															<tr height="18" class="table">
																<td width="25%">
																	&nbsp;<asp:TextBox ID="billing_telefon" Runat="server" Width="97%"></asp:TextBox>
																</td>
																<td bgcolor="#eeeee4" width="15%" class="table_solid_1px">
																	&nbsp;E-Mail:
																</td>
																<td width="60%">
																	&nbsp;<asp:TextBox ID="billing_email" Runat="server" Width="98.5%"></asp:TextBox>
																</td>
															</tr>
														</table>
													</td>
												</tr>
											</table>
										</td>
									</tr>
									<tr>
										<td class="table_solid_2px" align="left" valign="top">&nbsp;</td>
									</tr>
									<asp:Label ID="infosunten" Runat="server">
										<tr>
											<td>&nbsp;</td>
										</tr>
										<tr>
											<td class="table">
												
											</td>
										</tr>
									</asp:Label>
									<tr>
										<td>&nbsp;</td>
									</tr>
									<tr>
										<td class="table">
											<asp:CheckBox runat="server" ID="geprueft" Text="Ich habe meine Domain geprüft und bestätige hiermit das die Domain noch frei ist."></asp:CheckBox>
										</td>
									</tr>
									<tr>
										<td align="right"><asp:Button Runat="server" ID="submit" Text="Antrag abschicken"></asp:Button></td>
									</tr>
								</table>
							</td>
						</tr>
					</table>
					<inc4:header id="Header4" runat="server"></inc4:header>
    </form>
  </body>
</html>
 
Beitrag war zu lang: Hier das C# File:

PHP:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DomAdm
{
	/// <summary>
	/// Zusammenfassung für formular_neu.
	/// </summary>
	public class formular_neu : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.RadioButton ext;
		protected System.Web.UI.WebControls.RadioButton admin;
		protected System.Web.UI.WebControls.TextBox domainname;
		protected System.Web.UI.WebControls.RadioButton cms;
		protected System.Web.UI.WebControls.RadioButton free;
		protected System.Web.UI.WebControls.TextBox weiterleitung;
		protected System.Web.UI.WebControls.TextBox begruendung;
		protected System.Web.UI.WebControls.RadioButton aktiv;
		protected System.Web.UI.WebControls.RadioButton inaktiv;
		protected System.Web.UI.WebControls.RadioButton loeschen;
		protected System.Web.UI.WebControls.TextBox billing_userid;
		protected System.Web.UI.WebControls.TextBox billing_name;
		protected System.Web.UI.WebControls.TextBox billing_strasse;
		protected System.Web.UI.WebControls.TextBox billing_plz;
		protected System.Web.UI.WebControls.TextBox billing_ort;
		protected System.Web.UI.WebControls.TextBox billing_telefon;
		protected System.Web.UI.WebControls.TextBox billing_email;
		protected System.Web.UI.WebControls.Label infosunten;
		protected System.Web.UI.WebControls.TextBox tag;
		protected System.Web.UI.WebControls.TextBox monat;
		protected System.Web.UI.WebControls.TextBox jahr;
		protected System.Web.UI.WebControls.Button submit;
		protected System.Web.UI.WebControls.Label lblTitel1;
		protected System.Web.UI.WebControls.Label lblError;
		protected System.Web.UI.WebControls.CheckBox geprueft;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			lblTitel1.Text = Funktionen.ReadXML("titeltext");
			
			foreach (string strValue in Request.Form)
			{
				lblError.Text += strValue + "<br>";
			}
			
			if (Page.IsPostBack && Request.Form["submit"] != null) {
				string strError = "";
				if (geprueft.Visible && !geprueft.Checked) {
					strError = "Sie können den Antrag nur abschicken wenn Sie bestätigen dass die gewünschte Domain noch frei ist.";
				}
				else if (domainname.Text == "") {
					strError = "Bitte geben Sie einen Domainnamen ein.";
				}
				else if (weiterleitung.Text == "") {
					strError = "Bitte geben Sie eine Weiterleitungsadresse ein";
				}
				else if (begruendung.Enabled && begruendung.Text == "") {
					strError = "Bitte geben Sie eine Begründung ein";
				}
				else if (ext.Checked && !Funktionen.CheckDomainName(domainname.Text)) {
					string strEndungen = "";
					char[] separators = {','};
					string[] endungen = Funktionen.ReadXML("domainendungen").Split(separators);
					int i = 1;
					foreach (string strValue in endungen)
					{
						if (i.Equals(endungen.GetLength(0)))
							strEndungen += strValue;
						else if (i.Equals(endungen.GetLength(0)-1))
							strEndungen += strValue + " und ";
						else
							strEndungen += strValue + ", ";
						i++;
					}
					
					strError = "Der Domainname ist ungültig, bitte folgendes Format verwenden: www.IhrDomainname.Endung<br>";
					strError += "Folgende Endungen werden unterstützt: " + strEndungen;
				}
				else { strError = "Alles OK"; }
				
				lblError.Text = "<div align=\"center\"><font color=\"red\">" + strError + "</font></div><p>";
			}
		}

		#region Vom Web Form-Designer generierter Code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: Dieser Aufruf ist für den ASP.NET Web Form-Designer erforderlich.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung. 
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		private void InitializeComponent()
		{    
			this.ext.CheckedChanged += new System.EventHandler(this.ext_CheckedChanged);
			this.admin.CheckedChanged += new System.EventHandler(this.admin_CheckedChanged);
			this.aktiv.CheckedChanged += new System.EventHandler(this.aktiv_CheckedChanged);
			this.inaktiv.CheckedChanged += new System.EventHandler(this.inaktiv_CheckedChanged);
			this.loeschen.CheckedChanged += new System.EventHandler(this.loeschen_CheckedChanged);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void ext_CheckedChanged(object sender, System.EventArgs e)
		{
			infosunten.Visible = true;
			begruendung.Enabled = false;
			geprueft.Visible = true;
		}

		private void admin_CheckedChanged(object sender, System.EventArgs e)
		{
			infosunten.Visible = false;
			begruendung.Enabled = true;
			geprueft.Visible = false;
		}

		private void aktiv_CheckedChanged(object sender, System.EventArgs e)
		{
			weiterleitung.Enabled = true;
			if (ext.Checked) { geprueft.Visible = true; }
			else { geprueft.Visible = false; }
		}

		private void inaktiv_CheckedChanged(object sender, System.EventArgs e)
		{
			weiterleitung.Enabled = false;
			if (ext.Checked) { geprueft.Visible = true; }
			else { geprueft.Visible = false; }
		}

		private void loeschen_CheckedChanged(object sender, System.EventArgs e)
		{
			weiterleitung.Enabled = false;
			if (ext.Checked) { geprueft.Visible = true; }
			else { geprueft.Visible = false; }
		}
	}
}
 
Hmm, bei mir kommt dieser Fehler leider auch. Kann mir aber nicht erklären warum...

Die 2 mittleren RadioButtons ohne Events funktionieren ja auch. Aber die haben halt kein Event also muss dort bei den anderen der Fehler liegen.
Ich hatte sowas jedoch noch nie, Sorry!



ciao Anke
 

Neue Beiträge

Zurück