1. การพูดโดยทั่วไปหากคุณต้องการเพิ่มคุณสมบัติ JavaScript ลงในการควบคุมแบบฟอร์มเว็บในหน้า ASPX คุณสามารถใช้แอตทริบิวต์ ADD เพื่อให้ได้
ตัวอย่างเช่นสำหรับ textbox txt คุณสามารถ: คุณสามารถ:
txt.attributes.add ("onclick", "fcn0 ();");
จากนั้นเมื่ออยู่บนหน้าเว็บฟังก์ชัน JavaScript FCN0 จะถูกเรียก
1.1. ข้อยกเว้นคือการวิเคราะห์คุณลักษณะที่ IDE ไม่สามารถรับรู้ได้
ตัวอย่างเช่นสำหรับ Radiobutton RBT, IDE ไม่สามารถรับรู้แอตทริบิวต์ของ onclick ได้จากนั้นคำสั่งข้างต้น
rbt.attributes.add ("onclick", "fcn1 (นี่);");
ใน. NET Framework 1.1
<อินพุตประเภท = วิทยุ ID = rbt> ...
ใน. NET Framework 1.0
<span> <อินพุต type = Radio id = rbt> ... </span>
โปรดทราบว่าใน FCN1 วัตถุที่สอดคล้องกับพารามิเตอร์นี้แตกต่างกัน นี่คือความแตกต่างเล็กน้อย
2. สำหรับการควบคุม HTML คุณต้องทำสิ่งต่างๆมากขึ้น
เมื่อออกแบบหน้า ASPX ให้ลากตัวควบคุมแบบฟอร์มเว็บจากแถบเครื่องมือ
1. หน้า ASPX ประโยคเพิ่มเติม
<asp: textbox id = "textbox1" runat = "เซิร์ฟเวอร์"> </asp: textbox>
ประการที่สองรหัสเบื้องหลัง
Protected System.web.ui.webcontrols.TextBox TextBox1;
หากเป็นตัวควบคุม HTML ดังนั้นในประโยคแรก runat = "เซิร์ฟเวอร์" จะไม่ปรากฏขึ้นและเกมที่สองจะไม่ถูกเพิ่มโดยอัตโนมัติ
ดังนั้นหากคุณต้องการเข้าถึงการควบคุม HTML คุณต้องการ
1. เพิ่มแอตทริบิวต์ runat = "เซิร์ฟเวอร์" ไปยังคำสั่งของหน้า ASPX ซึ่งกลายเป็น
<อินพุต type = "text" size = "9" id = "htxt" runat = "เซิร์ฟเวอร์">
ประการที่สองประกาศแสดงในรหัสเบื้องหลัง
Protected System.web.ui.htmlcontrols.htmlinputtext;
โปรดทราบว่า ID ของประโยคแรกนั้นเหมือนกับชื่อตัวแปรของประโยคที่สอง
2.1 、注意到, 前面 system.web.ui.webcontrols.TextBox 对应的 html ควบคุม是 system.web.ui.htmlcontrols.htmlinputText, html 的แท็ก是 <อินพุตประเภท = "ข้อความ">,
ตามลำดับการควบคุม HTML ที่สอดคล้องกันของแท็ก HTML <body> คือ IS
Public System.web.ui.htmlcontrols.htmlgnericControl mybody;
2.2. ข้อยกเว้นอย่างหนึ่งคือเหตุการณ์ที่เกิดขึ้นในเหตุการณ์ onsubmit ที่สอดคล้องกับแท็ก <form> ของ HTML ดูหน้า ASPX ดังกล่าว
< %@ page language = "c#" codebehind = "webform2.aspx.cs" autoEventwareUp = "false" สืบทอด = "testcs.webform2" %>
<!
<html>
<head>
<title> webform2 </title>
<meta name = "general" content = "Microsoft Visual Studio 7.0">>
<meta name = "code_language" content = "c#">
<meta name = "vs_defaultClientscrivents" content = "JavaScript">
<meta name = "vs_targetschema" เนื้อหา = "http://schemas.microsoft.com/intellisense/ie5">
<ภาษาสคริปต์ = "JavaScript">
ฟังก์ชั่น fcn1 ()
-
พรอมต์ ("สวัสดี", "fcn1");
-
</script>
</head>
<body ms_positioning = "gridlayout">
<form id = "webform2" method = "post" runat = "เซิร์ฟเวอร์" onsubmit = "fcn1 ();">
<asp: ปุ่ม id = "button1" runat = "เซิร์ฟเวอร์" text = "ปุ่ม"> </asp: ปุ่ม>
<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>
</body>
</html>
เนื้อหานั้นง่ายมาก .
Microsoft AutopostBack = การใช้งาน WebControl ของ True Postback หลักการคือ:
ก่อนอื่นหากหน้า ASPX นี้มี WebControl ของ AutopostBack = TRUE คุณจะเขียนฟังก์ชั่น JavaScript ที่เรียกว่า __dopostback
<ภาษาสคริปต์ = "JavaScript">
-
ฟังก์ชั่น __dopostback (EventTarget, EventArgument) {
var theform;
if (window.navigator.appname.tologycase (). indexof ("netscape")> -1) {{
theform = document.forms ["WebForm2"];
-
อื่น {
theform = document.webform2;
-
Theform .__ eventtarget.value = eventtarget.split ("$")
TheForm .__ eventArgument.value = EventArgument;
theform.submit ();
-
-
</script>
2. ตัวอย่างเช่นรายการดรอปดาวน์ด้านบนจะแสดงผล:
<select name = "dropdownList1" onChange = "__DOPOSTBACK ('DropDownList1', '')" Language = "JavaScript" id = "DropDownList1">
<ตัวเลือกค่า = "a"> a </potion>
<ตัวเลือกค่า = "b"> b </portion>
<ตัวเลือกค่า = "C"> C </potion>
</เลือก>
ด้วยวิธีนี้โทรไปที่ Theform.submit ();
นี่คือข้อผิดพลาดของ Microsoft
โซลูชันสามารถดูได้ที่นี่: http://www.devhawk.net/art_submitfirefixup.ashx .
<httpmodules>
<เพิ่ม type = "devhawk.web.submitfirefixupmodule, submentFireFixUpModule" name = "submentFireFixUpModule" /> / /> /> /> />
</httpmodules>
ไม่เป็นไร
3. แอปพลิเคชัน
ฉันมักจะได้ยินข้อร้องเรียนว่าหาก JavaScript เปลี่ยนองค์ประกอบ <elect> ด้วย JavaScript บนเบราว์เซอร์แล้วรายการแบบเลื่อนลงบนฝั่งเซิร์ฟเวอร์ที่สอดคล้องกันไม่สามารถทราบการอัปเดตนี้ได้
สถานการณ์นี้อาจปรากฏในรายการดรอปดาวน์ของ "สหพันธ์ชั้นเรียน"
การใช้เทคโนโลยีข้างต้นฉันทำโซลูชันดังกล่าว (คล้ายกับวิธีการของ ViewState):
ก่อนอื่นฉันกำหนด txtWrap กล่องข้อความที่มีความยาวและความกว้าง 0 และเพิ่มรายการดรอปดาวน์ทั้งหมดที่ฉันต้องการจัดการกับคุณลักษณะเช่น ATHOSOSW = "จริง" เพื่อเตรียมพร้อมสำหรับการประมวลผล
2. อ้างถึงเนื้อหาของ 2.2 ข้างต้นข้างต้นฉันเข้าร่วม SubmitFireFixUpModule เพื่อให้แน่ใจว่าเหตุการณ์ onsubmit ที่ก่อให้เกิดแบบฟอร์ม
ประการที่สามเหตุการณ์ onsubmit ของ Form จะดำเนินการฟังก์ชัน JavaScript FCNATHOSONSUBMITWRAP ซึ่งสำรวจรายชื่อแบบเลื่อนลงของแอตทริบิวต์ Athososwa เป็นจริงบันทึกข้อมูลและในที่สุดก็รวมเข้ากับ txtWrap รหัสมีดังนี้:
ฟังก์ชั่น fcnathosonsubmitwrap ()
-
txtWrap = document.all ["txtWrap"];
var i;
var strwrap = '';
สำหรับ (i = 0; i <document.all.length; i ++)
-
ctrl = document.all [i];
if (ctrl.tagname.touppercase () == 'เลือก' && 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
ฟังก์ชั่น fcnathoswrapselect (ctrlselect)
-
var i;
var strPrapSelect = ctrlselect.id + '&' + ctrlselect.tagname;
var strvalue = '';
var strtext = '';
สำหรับ (i = 0; i <ctrlselect.options.length; i ++)
-
strvalue = ctrlselect.options [i]
strExt = ctrlselect.options [i] .Text;
strwrapSelect + = '&&' + i + i + '&' + strvalue.replace (/&/g, '%26') + '&' + strtext.replace (/&/g, '%26');
-
กลับ strwrapselect;
-
ประการที่สี่ page_load ของฟอร์มเรียกว่า clscommon.unwrapcontrol (นี่, txtwrap.text); Clscommon เป็นคลาสเครื่องมือของฉัน
มหาวิทยาลัยโมฆะสาธารณะคงที่
-
regex r3 = ใหม่ regex ("(" ("(" ("(" ("(&&&)); // แยกเป็นยัติภังค์
regex r2 = ใหม่ regex ("(" ("(" ("(" (&&)); // แยกเป็นยัติภังค์
regex r1 = ใหม่ regex ("(" (&)); // แยกเป็นยัติภังค์
String [] SA3, SA2, SA1;
สตริง 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);
สำหรับ (i3 = 0; i3 <(sa3.length+1)/2; i3 ++)
-
s2 = sa3 [i3*2];
ถ้า (s2.length> 0)
-
sa2 = r2.split (S2);
ถ้า (sa2.length> 1)
-
S1 = SA2 [0];
SA1 = R1.SPLIT (S1);
ถ้า (sa1.length == 3)
-
strid = sa1 [0];
strtagname = SA1 [2];
ctrlunWrap = pgunWrap.findControl (STRID);
if (ctrlunwrap! = null)
-
if (strtagname == "เลือก")
-
ddlunWrap = (dropdownlist) ctrlunWrap;
ddlunwrap.items.clear ();
สำหรับ (i2 = 1; i2 <(sa2.length+1)/2; i2 ++)
-
s1 = sa2 [i2*2];
SA1 = R1.SPLIT (S1);
liadd = ใหม่ system.web.ui.webcontrols.listitem (SA1 [4], SA1 [2]);
ddlunwrap.items.add (Liadd);
-
-
-
-
-
-
-
-
Athossmth สงวนลิขสิทธิ์โปรดระบุ