1. D'une manière générale, si vous souhaitez ajouter des caractéristiques JavaScript au contrôle du formulaire Web sur la page ASPX, vous pouvez utiliser des attributs.add pour réaliser.
Par exemple, pour TextBox Txt, vous pouvez: vous pouvez:
txt.attributes.add ("onclick", "fcn0 ();");
Ensuite, lorsqu'il se trouve sur la page Web, la fonction JavaScript FCN0 est appelée.
1.1.
Par exemple, pour un Radiobutton RBT, IDE ne peut pas reconnaître l'attribut d'Onclick, puis l'instruction ci-dessus,
Rbt.attributes.add ("onclick", "fcn1 (this);");
Dans le framework .net 1.1
<entrée type = radio id = rbt> ...
Dans le framework .net 1.0
<span> <entrée type = radio id = rbt> ... </span>
Notez que dans FCN1, l'objet correspondant au paramètre c'est différent. C'est une légère différence.
2. Pour le contrôle HTML, vous devez faire plus de choses.
Lors de la conception de la page ASPX, faites glisser un contrôle de formulaire Web à partir de la barre d'outils.
1. Page ASPX Plus de phrase
<Asp: textbox id = "textbox1" runat = "server"> </ asp: textbox>
Deuxièmement, code derrière
System protégé.web.ui.webControls.TextBox TextBox1;
S'il s'agit de contrôle HTML, alors dans la première phrase, Runat = "Server" n'apparaîtra pas et le deuxième jeu ne sera pas automatiquement ajouté.
Par conséquent, si vous souhaitez accéder au contrôle HTML, vous avez besoin
1. Ajouter l'attribut runat = "server" à l'instruction de la page ASPX, qui devient
<input type = "text" size = "9" id = "htxt" runat = "server">
Deuxièmement, la déclaration affichée dans le code derrière
System protégé.web.ui.htmlcontrols.htmlinputText;
Notez que l'ID de la première phrase est le même que le nom variable de la deuxième phrase.
2.1 、注意到 , 前面 System.web.ui.webcontrols.textBox 对应的 Html Control 是 System.Web.Ui.htmlControls.htmlinputText , 对应的 Html 的 Tag 是 <Input Type = "Text"> ,
En conséquence, le contrôle HTML correspondant de la balise HTML <body> est
public system.web.ui.htmlcontrols.htmlGnericControl Mybody;
2.2. Regardez une telle page ASPX
<% @ page linguistique = "C #" CodeBehind = "webForm2.aspx.cs" AutoEventwareUp = "false" hheRits = "testcs.webform2"%>
<!
<html>
<adal>
<Title> webForm2 </Title>
<meta name = "General" Content = "Microsoft Visual Studio 7.0">
<meta name = "code_language" content = "c #">
<meta name = "vs_defaultClientScript" content = "javascript">
<meta name = "vs_targetschema" contenu = "http://schemas.microsoft.com/intellisense/ie5">
<script linguisse = "javascript">
Fonction fcn1 ()
{{
Prompt ("hi", "fcn1");
}
</cript>
</ head>
<corps ms_positioning = "gridLayout">
<form id = "webform2" méthode = "post" runat = "server" onsubmit = "fcn1 ();">
<asp: bouton id = "Button1" runat = "server" text = "bouton"> </ asp: bouton>
<Asp: dropdownlist id = "dropdownlist1" runat = "server" autopostback = "true" >>
<asp: listItem value = "a"> a </ asp: listItem>
<asp: listItem value = "b"> b </ asp: listItem>
<asp: listItem value = "c"> c </ asp: listItem>
</ asp: dropdownlist>
</ form>
</docy>
</html>
Le contenu est très simple. .
Microsoft AutoPostBack = True's WebControl Implémentation Postback, le principe est:
Tout d'abord, si cette page ASPX a le WebStrol de AutoPostBack = TRUE, vous rédigerez une fonction JavaScript appelée __DOPOSTBACK.
<script linguisse = "javascript">
<! -
Fonction __DOPOSTBACK (EventTtarget, EventArgument) {
var theform;
if (window.navigator.appname.tologycase (). indexof ("netscape")> -1) {{{
theform = document.forms ["webform2"];
}
autre {
theform = document.webForm2;
}
Theform .__ Eventtarget.value = eventTarget.split ("$").
Theform .__ EventArgument.Value = EventArgument;
theform.Submit ();
}
// ->
</cript>
2. Par exemple, la liste déroulante ci-dessus sera rendue:
<select name = "dropdownlist1" onchange = "__dopostback ('dropdownlist1', '')" Language = "javascript" id = "dropdownlist1">
<option value = "a"> a </ option>
<option valeur = "b"> b </opoption>
<Option Value = "C"> C </ Option>
</lect>
De cette façon, appelez Theform.Submit ();
Ceci est un bug de Microsoft.
La solution peut être vue ici: http://www.devhawk.net/art_submitfirefixup.ashx. .
<httpmodules>
<add type = "Devhawk.web.SubmitfireFixupModule, soumitfirefixupmodule" name = "soumefirefixupmodule" /> /> />
</ httpmodules>
C'est très bien.
3. Une application.
J'entends souvent des plaintes selon lesquelles si JavaScript modifie un élément <lect> avec JavaScript sur le navigateur, la liste de dropdown du côté serveur correspondant ne peut pas connaître cette mise à jour.
Cette situation peut apparaître dans la liste déroulante de la "Fédération de classe".
En utilisant la technologie ci-dessus, j'ai fait une telle solution (similaire à la méthode de ViewState):
Tout d'abord, je définis une boîte de texte txtwrap avec 0 longueur et largeur, et ajoute toutes les listes de dropdown que je veux gérer avec des attributs tels que athososw = "true" pour se préparer au traitement.
2. Reportez-vous au contenu de ce qui précède ci-dessus, j'ai rejoint le soumisFireFixupModule pour garantir l'événement onSubmit qui déclenche le formulaire.
Troisièmement, l'événement ONSUMMIT de Form exécutera la fonction JavaScript Fcnathosonsubmitwrap, qui a traversé la liste déroulante de l'attribut Athososwa à True, a enregistré les données et a finalement fusionné dans TXTWRAP. Le code est le suivant:
Fonction fcnathosonsubmitwrap ()
{{
txtwrap = document.all ["txtwrap"];
var i;
var strwrap = '';
pour (i = 0; i <document.all.length; i ++)
{{
ctrl = document.all [i];
if (ctrl.tagname.touppercase () == 'select' && typeof (ctrl.athososw)! = 'undefined')))
{{
if (ctrl.athososw.touppercase () == 'true')
{{
Strwrap + = fcnathoswrapselect (ctrl) + '&&&;
}
}
}
if (strwrap.length> 3)
txtwrap.value = strwrap.substring (0, strwrap.length-3);
};
// Athososw
Fonction fcnathoswrapselect (ctrlSelect)
{{
var i;
Var strwrapselect = ctrlSelect.id + '&' + ctrlSelect.tagname;
var strvalue = '';
var strText = '';
pour (i = 0; i <ctrlSelect.options.length; i ++)
{{
strvalue = ctrlSelect.options [i].
strText = ctrlSelect.options [i] .Text;
Strwrapselect + = '&&' + i + i + '&' + strValue.replace (/ & / g, '% 26') + '&' + strText.replace (/ & / g, '% 26');
};
Return strwrapselect;
};
Quatrièmement, Page_load de formulaire est appelé clscommon.unwrapControl (this, txtwrap.text); ClScommon est ma classe d'outils.
Université statique du public public
{{
regex r3 = new regex ("(" ("(" ("(" (&&&)); // Split on tire.
regex r2 = new regex ("(" ("(" ("(&&)); // Split on tire.
regex r1 = new regex ("(" (&)); // divisé sur les traits de traits.
String [] SA3, SA2, SA1;
String S3, S2, S1;
int i3, i2, i1;
String Strid, strtagname;
System.Web.UI.Control CtrlUnwrap;
Dropdownlist ddlunwrap;
Listitem liadd;
S3 = strunwrap;
SA3 = R3.Split (S3);
pour (i3 = 0; i3 <(sa3.Length + 1) / 2; i3 ++)
{{
S2 = SA3 [i3 * 2];
if (s2.length> 0)
{{
SA2 = R2.Split (S2);
if (sa2.length> 1)
{{
S1 = SA2 [0];
SA1 = R1.Split (S1);
if (sa1.length == 3)
{{
stride = sa1 [0];
strtagname = sa1 [2];
ctrlUNWRAP = pgunwrap.findControl (strid);
if (ctrlunwrap! = null)
{{
If (strtagname == "select")
{{
ddlunwrap = (dropdownlist) ctrlunwrap;
ddlunwrap.items.clear ();
pour (i2 = 1; i2 <(sa2.length + 1) / 2; i2 ++)
{{
S1 = SA2 [i2 * 2];
SA1 = R1.Split (S1);
liadd = new System.web.ui.webControls.ListItem (SA1 [4], SA1 [2]);
ddlunwrap.items.add (liadd);
}
}
}
}
}
}
}
}
Athossmth Tous droits réservés, veuillez indiquer.