บทความนี้ส่วนใหญ่แนะนำเจ็ดวิธีในการใช้การแสดงการปนเปื้อนใน ASP
ในระบบการเขียนโปรแกรม ASP ของ Microsoft การจัดตั้งวัตถุ ADO ทำให้การเข้าถึงฐานข้อมูลจากหน้าเว็บเป็นงานง่ายโดยเฉพาะอย่างยิ่งวัตถุ ADO Recordset ทำให้สะดวกและฟรีในการแสดงผลลัพธ์การควบคุม ใน Visual Interdev6.0 (ต่อไปนี้เรียกว่า VI6.0) เนื่องจากการแนะนำตัวแบบวัตถุเช่นโมเดลวัตถุสคริปต์ (ต่อไปนี้จะเรียกว่า SOM) การควบคุมเวลาการออกแบบ (ต่อไปนี้จะเรียกว่า DTC) และสภาพแวดล้อมข้อมูล โมเดลวัตถุ (ต่อไปนี้จะเรียกว่า deom) ทำให้หน้าเว็บสะดวกในการเข้าถึงฐานข้อมูลมากขึ้น
เนื่องจากหัวข้อเกี่ยวกับการเชื่อมต่อฐานข้อมูลสิ่งต่อไปนี้จะให้รหัสและความคิดเห็นสั้น ๆ เท่านั้นและมุ่งเน้นไปที่วิธีการใช้วัตถุ RecordSet (หรือการควบคุม) เพื่อใช้การแสดงการปนเปื้อนของบันทึกข้อมูล ตามความเข้าใจของฉันกุญแจสำคัญในการแสดงการปนเปื้อนคือการควบคุมคุณสมบัติและวิธีการของวัตถุบันทึกชุดของ ADO หรือ DTC (การควบคุมเวลาการออกแบบ)
อาวุธทั้งเจ็ดนี้แสดงในหน้าเว็บสรุปไว้ในสี่หมวดหมู่: ชิ้นแรกและที่สองฉันเรียกพวกเขาว่าวิธี ASP บริสุทธิ์ชั่วคราว
นี่เป็นวิธีที่ใช้กันมากที่สุดในเว็บไซต์ ASP ในประเทศ การใช้วิธีการทั้งสองนี้เป็นวิธีที่ง่ายที่สุดในการทำความเข้าใจแนวคิดวัตถุน้อยที่สุดถูกใช้และข้อกำหนดขั้นต่ำสำหรับสภาพแวดล้อมการพัฒนา (เพียงแค่จดบันทึก) อาจกล่าวได้ว่าสาระสำคัญของวิธีการทั้งสองนี้ยังคงเป็นแนวคิดการเขียนโปรแกรมของ CGI ซึ่งเป็นเพียงการแนะนำวัตถุ ADO ในโปรแกรม
วิธี DHTML ที่สี่และห้าชื่อ SOM ชั่วคราว
วิธีการทั้งสองนี้จำเป็นต้องใช้โมเดลวัตถุสคริปต์ของ Microsoft (โมเดลวัตถุสคริปต์) และคุณสมบัติใหม่ของการเชื่อมฐานข้อมูลของวัตถุตารางใน DHTML ใน VI6.0 (หนังสือและบทความจำนวนมากแนะนำคุณสมบัติ CSS ของ DHTML ละเว้นการแนะนำคุณสมบัติการเชื่อมโยงข้อมูลและตระหนักถึงการหมุนเวียนหน้าเว็บทางฝั่งไคลเอ็นต์ อย่างไรก็ตามต้องการให้เบราว์เซอร์ของผู้ใช้ต้องรองรับ DHTML เช่น: Microsoft Internet Explorer 4.0 ขึ้นไป
วิธีที่หกมีชื่อว่าวิธี SOM Server-Side ชั่วคราว
มันต้องการการพัฒนาในสภาพแวดล้อม VI6.0 ซึ่งใช้การควบคุม DTC หลายตัวในโมเดลวัตถุสคริปต์ที่เสนอโดย Microsoft: RecordSet, PageObject, GRID ฯลฯ เพื่อใช้การควบคุมการเปิดเพจบนฝั่งเซิร์ฟเวอร์ (ไคลเอนต์) นี่คือวิธีการเขียนโปรแกรมที่น่าตื่นเต้นและใหม่ที่ถือว่าหน้าเว็บเป็นวัตถุ (โมเดลวัตถุนี้แตกต่างจากแบบจำลองวัตถุ DOM ---- เอกสาร: DOM สามารถควบคุมไคลเอ็นต์ได้เท่านั้นในขณะที่ SOM สามารถควบคุมฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ได้ ) ซึ่งใช้การเขียนโปรแกรมเชิงวัตถุอย่างแท้จริงของหน้าเว็บ แต่น่าเสียดายที่ความสามารถส่วนตัวของฉันอาจมี จำกัด และโดยส่วนตัวแล้วฉันคิดว่าเทคโนโลยีนี้ยังไม่โตเต็มที่
วิธีที่เจ็ดคือวิธีการ deom ชั่วคราว
นอกจากนี้ยังใช้โมเดลวัตถุสภาพแวดล้อมข้อมูลที่สร้างขึ้นใน VI6.0 เพื่อสร้างวัตถุชุดบันทึก นี่เป็นวิธีใหม่ที่ค่อนข้างหายากในการเขียนโปรแกรมเว็บ
รหัสแหล่งที่มาทั้งหมดที่กล่าวถึงในภายหลังสามารถคัดลอกและใช้โดยตรง
ก่อนที่เราจะเริ่มแนะนำวิธีการเพจที่หลากหลายให้สร้างฐานข้อมูล: ใช้การเข้าถึงใน Office97 เพื่อสร้าง Employee.MDB ซึ่งสร้างตาราง EMP และตั้งค่าเพียงสามฟิลด์: EMP ID ชื่อสุดท้ายและชื่อแรก เหตุใดจึงเป็นเรื่องง่าย?
วิธีแรกของการแทนที่พารามิเตอร์โดยตรง
วิธีนี้คือการสร้างวัตถุ RecordSet ด้วยตนเองและใช้ PAGESIZE (ระบุจำนวนระเบียนที่แสดงต่อหน้า), pagecount (หมายเลขหน้าทั้งหมด) และคุณสมบัติ AbsolutePage (หมายเลขหน้าปัจจุบัน) เพื่อควบคุมเอาต์พุตของหน้า เพจเพจหน้าใช้วิธีการพารามิเตอร์การกำหนดหมายเลขหน้าโดยตรงเพื่อควบคุมการหมุนเวียนหน้า ชื่อของหน้าเว็บคือ emp1.asp ซอร์สโค้ดมีดังนี้:
- <%// สร้างการเชื่อมต่อกับฐานข้อมูล Employee.MDB
- setConn = server.createObject (adodb.connection)
- conn.opendriver = {Microsoft AccessDriver (*. mdb)}; dbq = exployee.mdb
- // สร้างอินสแตนซ์ของวัตถุ RecordSet ของตาราง EMP
- setRs = server.createObject (adodb.recordset)
- Rs.Openemp, Conn, 3
- PAGESIZE = 10 // แอตทริบิวต์ PAGESIZE ระบุจำนวนบันทึกที่จะแสดงในแต่ละหน้า
- page = clng (คำขอ (หน้า)) 'ประเภทสตริงที่แปลงเป็นประเภทยาว
- ifpage <1thenpage = 1
- ifpage> rs.pageCountThenPage = rs.pagecount
- ifpage <> 1 จากนั้น
- Response.write <ahref = emp1.asp? page = 1> page1 </a>
- Response.write <ahref = emp1.asp? page = & (page-1) &> หน้าก่อนหน้า </a>
- endif
- ifpage <> rs.pagecountthen
- Response.write <ahref = emp1.asp? page = & (หน้า+1) &> หน้าถัดไป </a>
- Response.write <ahref = emp1.asp? page = & rs.pagecount &> หน้าสุดท้าย </a>
- endif
- response.write หมายเลขหน้า: &//& rs.pagecount & </font>
- // แสดงผลของแต่ละหน้า
- // แสดงส่วนหัว
- Response.write <Center >< TableBorder = 1>
- Response.write <tr >< td> & rs.fields (empid) .name & </td>
- Response.write <td> & rs.fields (นามสกุล) .name & </td>>
- Response.write <td> & rs.fields (ชื่อแรก) .name & </td ></tr>
- // ปั่นป่วนการแสดงผลของแต่ละระเบียน
- rs.absolutePage = หน้า // กำหนดหมายเลขหน้าให้กับแอตทริบิวต์ AbsolutePage เพื่อทราบหมายเลขบันทึกแรกของหน้าปัจจุบัน
- foripage = 1tors.pagesize //
- Response.write <tr >< td> & rs.fields (empid) .Value & </td>
- Response.write <td> & rs.fields (ชื่อแรก) .Value & </td>
- Response.write <td> & rs.fields (นามสกุล) .Value & </td ></tr>
- Rs.Movenext
- ifrs.eoftthenexitfor
- ต่อไป
- Response.write </ตาราง ></ศูนย์>%>
ประเภทที่สอง: วิธีการถ่ายโอนแบบฟอร์มพารามิเตอร์
วิธีนี้เหมือนกับวิธีแรกเมื่อสร้างวัตถุ RecordSet ยกเว้นว่าเมื่อการควบคุมการหมุนหน้าจะใช้คำสั่ง CASE เพื่อให้ได้การเปิดหน้า ชื่อของหน้าเว็บคือ: emp2.asp วิธีนี้มีข้อเสียในการเขียนโปรแกรมตรรกะ: มันจะหมุนหน้าโดยอัตโนมัติหลังจากกดปุ่มหน้าก่อนหน้าหรือหน้าถัดไปจากนั้นกดปุ่มรีเฟรชบนเบราว์เซอร์ ซอร์สโค้ดมีดังนี้:
- ifpagenum = thenpagenum = 1 // แสดงจากหน้าแรก
- // สร้างการเชื่อมต่อฐานข้อมูลและอินสแตนซ์ออบเจ็กต์ recordset Rs
- เหมือนกับวิธีแรกข้ามที่นี่
- Rs.Pagesize = 10'Set จำนวนระเบียนที่แสดงในหน้าถึง 10
- // ยืนยันการดำเนินการเปิดหน้า
- SelectCaseRequest (NAV)
- กรณี
- เซสชัน (pagenum) = 1
- casefirst'firstrecord
- เซสชัน (pagenum) = 1
- caseprev'previousrecord
- Ifsession (pagenum)> 1 จากนั้น
- เซสชัน (pagenum) = เซสชัน (pagenum) -1
- endif
- Casenext'Nextrecord
- ifsession (pagenum) <rs.pagecountthen
- เซสชัน (pagenum) = เซสชัน (pagenum) +1
- endif
- caselast'lastrecord
- เซสชัน (pagenum) = rs.pagecount
- endelect
- rs.absolutePage = clng (เซสชัน (pagenum)) // กำหนดหมายเลขบันทึกแรกของหน้าปัจจุบัน
- // แสดงหน้าปัจจุบัน
- เช่นเดียวกับวิธีแรกข้ามไปที่นี่
- // การตั้งค่าปุ่มเปิดหน้า
- <formMethod = getAction = emp2.asp>
- <inputType = submitName = navValue = home>
- <inputType = submitValue = ชื่อหน้าก่อนหน้า = nav>
- <inputType = submitValue = Next Page Name = Nav>
- <inputType = submitValue = ชื่อหน้าสุดท้าย = nav ></form>
ประเภทที่สาม: ใช้การควบคุมกริดเพื่อออกแบบเพจ
จากวิธีการทั้งหมดวิธีนี้เป็นวิธีที่ง่ายที่สุด คุณเพียงแค่ต้องลากตัวควบคุม RecordSet และการควบคุมกริดใน DTC ไปยังหน้าเว็บ ASP นอกจากนี้คุณยังสามารถเลือกได้ว่าจะควบคุมการหมุนเวียนหน้าเว็บบนแพลตฟอร์มเซิร์ฟเวอร์หรือบนแพลตฟอร์มไคลเอนต์ ข้อเสียคือคุณต้องแสดงในรูปแบบที่กำหนดโดยและคุณไม่สามารถควบคุมรูปแบบการแสดงผลของตารางด้วยตัวเอง
วิธีนี้มีดังนี้:
สร้างโครงการ EMP.VIP ใน VI6.0 จากนั้นเพิ่มเว็บเพจ ASP ในโครงการ: emp3.asp
ขั้นตอนที่ 1: เลือกเพิ่ม Data Connect ... บนแถบเมนู VI6.0 และทำตามพรอมต์การนำทางของเครื่องมือพัฒนาและคุณสามารถสร้างการเชื่อมต่อกับฐานข้อมูล Employee.MDB ได้อย่างง่ายดาย ลากตัวควบคุม RecordSet จากแถบเครื่องมือ DTC ไปยังหน้าเว็บและตั้งค่าคุณสมบัติ เฉพาะตามที่แสดงในภาพ:
เมื่อคุณลากตัวควบคุมไปยังหน้าเว็บ VI6.0 จะแจ้งให้คุณทราบโดยอัตโนมัติว่าจะใช้โมเดลวัตถุสคริปต์และกดใช่
ขั้นตอนที่ 3: ลากตัวควบคุมกริดจากแถบเครื่องมือ DTC ลงในหน้าเว็บจากนั้นคลิกขวาเพื่อตั้งค่าคุณสมบัติเช่น: เลือกชื่อควบคุมชุดบันทึกที่สร้างขึ้นในขั้นตอนที่สองเลือกฟิลด์ในตาราง EMP และแต่ละหน้า มีการแสดงกี่ระเบียนและรูปแบบการแสดงผล ฯลฯ มันง่ายและสะดวกมากเพียงทำตามพรอมต์การนำทาง
ประเภทที่สี่: วิธี DHTML หนึ่ง
บันทึกข้อมูลจะแสดงในตาราง HTML มันใช้คุณสมบัติการเชื่อมโยงข้อมูลของตารางใน DHTML เพื่อควบคุมการแสดงการปนเปื้อนของระเบียน ข้อเสียคือวิธีการเปิดเพจของคุณจะถูก จำกัด ไว้ที่วิธีการเฉพาะ: เฉพาะหน้าก่อนหน้าและหน้าถัดไป แต่ไม่ใช่โฮมเพจและหน้าสุดท้าย เนื่องจากมันถูกควบคุมทางฝั่งไคลเอ็นต์วิธีนี้และวิธีที่ห้านั้นเร็วที่สุด แต่น่าเสียดายที่มันสามารถใช้กับเบราว์เซอร์ที่รองรับ DHTML ได้เท่านั้น
ใน DHTML
คุณสมบัติ DATASRC อนุญาตให้ตารางถูกผูกไว้กับแหล่งข้อมูลและข้อมูลคุณสมบัติอื่น ๆ ระบุจำนวนบันทึกที่แสดงบนหน้าหนึ่งในแต่ละครั้ง
ดูตัวอย่างต่อไปนี้:
ขั้นตอนที่ 1: ลากตัวควบคุม RecordSet ไปยังหน้าเว็บที่สร้างขึ้นใหม่ EMP4.htm และตั้งค่าคุณสมบัติ
ขั้นตอนที่ 2: ป้อนรหัสต่อไปนี้:
- <TableId = table1DatasRc =#recordSet1_RDSDATAPAGESIZE = 5> // สมมติว่าชื่อการควบคุมชุดบันทึกคือ RecordSet1 ก่อนถูกตั้งค่า 5 ระเบียนจะปรากฏขึ้นต่อหน้า
- <Thead>
- <thalign = leftwidth = 150> empid </th> // ส่วนหัวตารางเอาต์พุต
- <thalign = leftwidth = 200> นามสกุล </th>
- <thalign = leftwidth = 200> firstName </th>
- </thead>
- <tr>
- <td >< divdatafld = empid ></div ></td> // เนื้อหาตารางเอาต์พุต
- <td >< divdatafld = นามสกุล ></div ></td>
- <td >< divdatafld = firstName ></div ></td>
- </tr>
- </ตาราง>
ขั้นตอนที่ 3: จากนั้นเพิ่มปุ่มปุ่ม DTCS ตัวควบคุมเพื่อทำการนำทางเปิดหน้าหนึ่งชื่อ BTNPrevious (หน้าก่อนหน้า) และอีกชื่อหนึ่งชื่อ BTNNEXT (หน้าถัดไป) สคริปต์ที่เกี่ยวข้องของพวกเขามีดังนี้:
- <scriptLanguage = vbscript>
- functionbtnprevious_onclick ()
- ตารางที่ 1.PreviousPage ()
- endfunction
- functionbtnnext_onclick ()
- ตารางที่ 1.NextPage ()
- endfunction
- </สคริปต์>
ประเภทที่ห้า: วิธี DHTML สอง
วิธีนี้เป็นวิธีที่สมบูรณ์แบบสำหรับวิธีที่สี่ วิธีการเขียนสคริปต์ด้วยตนเองช่วยให้เราสามารถสร้างหน้าแรกและหน้าสุดท้ายของปุ่มนำทางและเพื่อกำหนดตำแหน่งของแต่ละระเบียน (หมายเลขบันทึก) เนื่องจากความยาวฉันจะแนะนำตัวอย่างเฉพาะด้านล่างเท่านั้นและให้คำอธิบายสั้น ๆ สำหรับคุณสมบัติและวิธีการอื่น ๆ ของการควบคุม DHTML และ RecordSet โปรดดูหนังสือที่เกี่ยวข้องด้วยตัวเอง ควรสังเกตที่นี่ว่าการควบคุม RecordSet นั้นค่อนข้างแตกต่างจากวัตถุ ADO Recordset ที่แนะนำในวิธีแรกและสอง: การควบคุมชุดบันทึกไม่ได้ให้คุณสมบัติโดยตรงเช่น PageSize และ Pagecount และจำเป็นต้องคำนวณโดยใช้วิธีการที่แนะนำด้านล่าง
ขั้นตอนที่ 1: ลากตัวควบคุม RecordSet ไปยังหน้าเว็บที่สร้างขึ้นใหม่ EMP5.HTM ด้วยชื่อ RecordSet1 และตั้งค่าคุณสมบัติ
ขั้นตอนที่ 2: กำหนดตัวแปรทั่วโลกสามตัวและเขียนสคริปต์ onDataSetComplete ของ recordSet1
- DimgCurrentPagenumber // หมายเลขหน้าปัจจุบัน
- Dimgmaxpagenumber // จำนวนหน้าสูงสุด
- dimgrecordsperpage // จำนวนระเบียนที่แสดงต่อหน้า
- grecordsperPage = 5 // ตั้งค่าจำนวนระเบียนที่แสดงต่อหน้าเป็น 5 ระเบียน
- functionRecordSet1_ondataSetComplete ()
- TotalRecordCount = RecordSet1.getCount () // จำนวนบันทึกทั้งหมด
- gmaxpagenumber = int (TotalRecordCount/GrecordsperPage) // รับจำนวนสูงสุด
- if (TotalRecordCountModgrecordsperPage)> 0 แล้ว
- gmaxpagenumber = gmaxpagenumber+1
- endif
- endfunction
ขั้นตอนที่ 3: สร้างปุ่มนำทางเปิดหน้า
- functionbtnfirst_onclick () 'พลิกไปที่หน้าแรก
- gcurrentPagenumber = 1
- displaydata ()
- endfunction
- functionbtnprevious_onclick () 'พลิกไปที่หน้าก่อนหน้า
- ifgcurrentPagenumber> 1 จากนั้น
- gcurrentPagenumber = gcurrentPagenumber-1
- displaydata ()
- endif
- endfunction
- functionbtnnext_onclick () 'พลิกไปที่หน้าถัดไป
- ifgcurrentPagenumber <gmaxpagenumberthen
- gcurrentPagenumber = gcurrentPagenumber+1
- displaydata ()
- endif
- endfunction
- functionbtnlast_onclick () 'พลิกไปที่หน้าสุดท้าย
- gcurrentPagenumber = gmaxpagenumber
- displaydata ()
- endfunction
ขั้นตอนที่ 4: เขียนฟังก์ชั่นที่แสดงแต่ละหน้า มีการใช้คุณสมบัติและวิธีการ DHTML จำนวนมากโปรดดูหนังสือที่เกี่ยวข้องด้วยตัวเอง
- subdisplaydata ()
- startRecord = ((gcurrentPagenumber-1)*grecordsperPage)+1 // คำนวณจำนวนระเบียนที่แสดงที่จุดเริ่มต้นของแต่ละหน้า (ตำแหน่งซึ่งรายการใด)
- rowctr = 1
- lblpagenumber.innerhtml = gcurrentPagenumber &/& gmaxpagenumber
- forRecordPTR = StarTreCordto (StarTrecord+GrecordsperPage-1) // การขี่จักรยานเพื่อแสดงแต่ละระเบียนในหน้าหนึ่ง
- ifrecordptr> recordset1.getCount () แล้ว // แสดงตารางที่ว่างเปล่า
- table1.rows (rowctr) .cells (0) .innerhtml = <p ></p>
- ตารางที่ 1.Rows (rowctr) .cells (1) .innerhtml = <p ></p>
- ตารางที่ 1.Rows (rowctr) .cells (2) .innerhtml = <p ></p>
- ตารางที่ 1.Rows (rowctr) .cells (3) .innerhtml = <p ></p>
- อื่น // ระบุแต่ละหน้า
- RecordSet1.MoveAbeAslute (RecordPTR) // ย้ายตัวชี้บันทึก
- empid = recordset1.fields.getValue (EMPID)
- emplname = recordset1.fields.getValue (FirstName)
- empfname = recordset1.fields.getValue (นามสกุล)
- table1.rows (rowctr) .cells (0) .innertext = recordptr'counter
- table1.Rows (rowctr) .cells (1) .innerText = empid
- table1.Rows (rowctr) .cells (2) .innerText = emplName
- table1.Rows (rowctr) .cells (3) .innerText = empfname
- endif
- rowctr = rowctr+1
- ต่อไป
- enddub
นอกจากนี้เรายังต้องเขียนสคริปต์ต่อไปนี้ในเหตุการณ์ OnLoad ของวัตถุหน้าต่าง:
- forrowctr = 1togrecordsperpage
- table1.insertrow (rowctr) 'แทรกคอลัมน์ใหม่
- forcellctr = 0to3
- ตารางที่ 1.Rows (rowctr) .insertcell ()
- ต่อไป
- ต่อไป
วิธีที่หก: การหมุนเวียนหน้าการควบคุมฝั่งเซิร์ฟเวอร์
หากเราแบ่งข้อมูลบนเซิร์ฟเวอร์แล้วส่งออกไปยังไคลเอนต์จะไม่มีปัญหาที่เบราว์เซอร์ไม่รองรับ DHTML อย่างไรก็ตามการใช้วิธีการฝั่งเซิร์ฟเวอร์ทำให้เราต้องสร้างตัวควบคุม RecordSet ใหม่ทุกครั้งที่เราเปิดหน้าดังนั้นความเร็วจะช้ากว่าการใช้วิธี DHTML อย่างแน่นอน แต่ถ้าเซิร์ฟเวอร์เร็วพอความช้าของลูกค้าจะไม่สังเกตเห็น
ในตัวอย่างต่อไปนี้ฉันจะแนะนำการควบคุม DTC ใหม่: PageObject การควบคุมนี้ทำให้เว็บเพจที่ระบุเป็นวัตถุและรูทีนย่อยและฟังก์ชั่นที่จัดโดยผู้ใช้ในสคริปต์เซิร์ฟเวอร์ของหน้าเว็บอาจถือได้ว่าเป็นวิธีการของวัตถุเว็บเพจ มันมีวิธีการขั้นสูงสำหรับการจัดการข้อมูลสถานะ: วัตถุเว็บมีคุณสมบัติบางอย่าง (ตัวแปร) ที่ผู้ใช้สามารถกำหนดอายุการใช้งานของคุณสมบัติเหล่านี้ เนื่องจากคุณสมบัติข้างต้นทำให้เราสะดวกมากในการรวบรวมสคริปต์การเปลี่ยนหน้า
แต่ข้อเสียของวิธีนี้คือ: เมื่อคุณกดปุ่มหน้าก่อนหน้าหรือปุ่มหน้าถัดไปจากนั้นกดปุ่มรีเฟรชบนเบราว์เซอร์เว็บเพจจะหมุนหน้าโดยอัตโนมัติ นอกจากนี้หากคุณกดปุ่มทางเลือกบนเบราว์เซอร์แล้วกดปุ่มเปิดหน้าคุณสามารถหมุนไปรอบ ๆ แบบสุ่ม ทั้งหมดนี้เกิดจากคุณสมบัติของวัตถุเว็บ (ตัวแปรทั่วโลก)
ขั้นตอนที่ 1: ลากตัวควบคุม RecordSet ไปยังหน้าเว็บที่สร้างขึ้นใหม่ EMP6.ASP ด้วยชื่อ RecordSet1 และตั้งค่าคุณสมบัติ
ขั้นตอนที่ 2: ลากตัวควบคุม pageObject ไปยังหน้าเว็บและตั้งชื่อ emplist จากนั้นคลิกขวาที่การควบคุมนี้เพื่อเปิดหน้าคุณสมบัติและตั้งค่าคุณสมบัติสามประการ (ตัวแปรทั่วโลก) ของ MaxPagenumber, RecordSperPage และ CurrentPagenumber VI6.0 สามารถใช้วิธีการรับและตั้งค่าเพื่ออ่านและเขียนค่าของพวกเขา
ขั้นตอนที่ 3: เขียนเหตุการณ์ ondatasetcomplete ของ RecordSet1
- functionRecordSet1_ondataSetComplete ()
- RecordSperPage = 5
- emplist.setRecordSperPage (RecordSperPage) // ตั้งค่าหมายเลขบันทึกออบเจ็กต์หน้าเว็บหน้าเว็บเป็น 5 หน้าเป็น 5
- TotalRecordCount = RecordSet1.getCount () // รับจำนวนชุดบันทึกทั้งหมด
- mpn = int (TotalRecordCount/RecordSperPage) // คำนวณ MPN เป็นจำนวนหน้าทั้งหมด
- if (TotalRecordCountModrecordSperPage)> 0 แล้ว
- MPN = MPN+1
- endif
- emplist.setMaxPagenumber (MPN)
- endfunction
ขั้นตอนที่ 4: ลากปุ่มควบคุมสี่ปุ่มลงในเว็บเพจและเขียนสคริปต์การควบคุมการเปิดหน้า เราตระหนักถึงการเลี้ยวหน้าเว็บเป็นหลักโดยการเปลี่ยนค่าของคุณสมบัติปัจจุบัน Pagenumber ของวัตถุหน้าเว็บ
- functionbtnfirst_onclick () 'พลิกไปที่หน้าแรก
- emplist.setCurrentPagenumber (1)
- endfunction
- functionbtnprevious_onclick () 'พลิกไปที่หน้าก่อนหน้า
- cpn = emplist.getCurrentPagenumber ()
- ifcpn> 1 จากนั้น
- emplist.setCurrentPagenumber (CPN-1)
- endif
- endfunction
- functionbtnnext_onclick () 'พลิกไปที่หน้าถัดไป
- cpn = emplist.getCurrentPagenumber ()
- ifcpn <emplist.getmaxpagenumber () แล้ว
- emplist.setCurrentPagenumber (CPN+1)
- endif
- endfunction
- functionbtnlast_onclick () 'พลิกไปที่หน้าสุดท้าย
- emplist.setCurrentPagenumber (emplist.getMaxPagenumber ())
- endfunction
เพื่อให้แน่ใจว่าหน้าแรกจะปรากฏขึ้นเมื่อเข้าสู่หน้าเป็นครั้งแรกเราต้องเขียนเหตุการณ์ OnEnter ของวัตถุหน้าเว็บ
- functionemplist_onenter ()
- ifemplist.firstenteredthen
- emplist.setCurrentPagenumber (1)
- endif
- endfunction
- ขั้นตอนที่ 5: เขียนสคริปต์ที่แสดงแต่ละหน้า
- <HR >< TableBorder = 0 >< tr> // แสดงส่วนหัว
- <thalign = leftwidth = 35 ></th>
- <thalign = leftwidth = 150> empid </th>
- <thalign = leftwidth = 200> นามสกุล </th>
- <thalign = leftwidth = 200> firstName </th ></tr>
- %
- pagenumber = emplist.getCurrentPagenumber () // คำนวณพารามิเตอร์ต่างๆที่จำเป็นสำหรับการเลี้ยวหน้าเช่นเดียวกับวิธี DHTML สอง
- recordSperPage = emplist.getRecordSperPage ()
- StarTrecord = ((pagenumber-1)*RecordSperPage) +1
- lastrecord = recordset1.getCount ()
- forRecordPTR = startRecordto (StarTrecord+RecordSperPage-1)%>
- <%ifrecordset1.eof = Truethen%>
- <tr>
- <td ></td>
- <td ></td>
- <td ></td>
- <td ></td>
- </tr>
- <%อื่น%>
- <%Recordset1.MoveAbeBsolute (RecordPTR)%>
- <tr>
- <%ifrecordptr <= lastrecordthen%>
- <td ><%= recordptr%></td>
- <%อื่น%>
- <td ></td>
- <%endif%>
- <td ><%= recordset1.fields.getValue (empid)%></td>
- <td ><%= recordset1.fields.getValue (นามสกุล)%></td>
- <td ><%= recordset1.fields.getValue (ชื่อแรก)%></td>
- </tr>
- <%endif%>
- <%ถัดไป%>
- </ตาราง >< ชม.>
ประเภทที่เจ็ด: วิธีการแบบจำลองวัตถุสภาพแวดล้อมข้อมูล
โมเดลวัตถุสภาพแวดล้อมข้อมูลเป็นบทสรุปโมเดลออบเจ็กต์ ADO และวัตถุ - การเชื่อมต่อ, คำสั่ง, บันทึกชุด, ฟิลด์และวัตถุพารามิเตอร์ - เป็นรูปแบบที่ง่ายขึ้น รูปแบบวัตถุสภาพแวดล้อมข้อมูลเปิดเผยคำสั่งเป็นวิธีการ ผู้ใช้สามารถเรียกวิธีการเหล่านี้ซึ่งเรียกใช้คำสั่งเหล่านี้และส่งคืนชุดบันทึกผลลัพธ์ สำหรับข้อมูลรายละเอียดเกี่ยวกับโมเดลวัตถุ Deom โปรดดูหนังสือที่เกี่ยวข้อง ลองดูตัวอย่างต่อไปนี้ของ emp7.asp:
ขั้นตอนที่ 1: คลิกขวาที่เมาส์ในโครงการในหน้าต่าง Project Explorer ของ VI6.0 และเลือกเพิ่มการเชื่อมต่อข้อมูลจากเมนูป๊อปอัพ หลังจากสร้างการเชื่อมต่อกับฐานข้อมูลตามพรอมต์การนำทางที่กำหนดโดย VI ผู้ใช้จะเพิ่มคำสั่ง DATA เพื่อเข้าถึงฐานข้อมูลจากแอปพลิเคชัน ASP ในเวลาเดียวกันคุณจะเห็นวัตถุสภาพแวดล้อมข้อมูลภายใต้ไฟล์ global.asa ในหน้าต่าง Project Explorer
ขั้นตอนที่ 2: คลิกขวาที่วัตถุสภาพแวดล้อมข้อมูลและเลือกตัวเลือกคำสั่งเพิ่มข้อมูลจากเมนูป๊อปอัปเพื่อเพิ่มคำสั่งคำสั่ง data data 1 ตามพรอมต์การนำทางของ VI6.0 คุณสามารถเลือกคำสั่ง SQL ในหน้าพันธุศาสตร์ของหน้าต่างป๊อปอัพคุณสมบัติ Command1 และป้อน: เลือก * จาก EMP กดตกลงเพื่อส่งคืน
ขั้นตอนที่ 3: หลังจากที่คุณสร้างคำสั่งข้อมูลนี้คุณได้สร้างวิธีการสำหรับวัตถุสภาพแวดล้อมข้อมูลแล้วคุณสามารถเรียกวิธีการนี้จากสคริปต์และวิธีการจะส่งคืนบันทึกการตั้งค่าให้กับผู้ใช้
thispage.createde () // ในโหมด SOM, thispage แสดงถึงวัตถุหน้าเว็บปัจจุบันและเมธอด createde () สร้างวัตถุ DE
de.Command1 // ดำเนินการคำสั่งของวัตถุ DE ซึ่งสามารถใช้เป็นพารามิเตอร์ในภายหลังซึ่งมีประโยชน์มากเมื่อทำแบบสอบถามแบบมีเงื่อนไข
SET RS = DE.RSMOMMAND1 // DE.RSMOMMAND1 ทำให้วัตถุ RS เทียบเท่ากับวัตถุ ADO RecordSet อย่างสมบูรณ์
ขั้นตอนที่ 4: เนื่องจากอาร์เอสเป็นวัตถุ ADO หน้าการใช้งานหน้าการใช้งานต่อไปนี้จึงหมายถึงวิธีการที่แนะนำข้างต้นอย่างสมบูรณ์และถูกข้ามที่นี่
วิธีการอื่น ๆ เช่นวิธีการที่ใช้ในการนำทางฐานข้อมูลใน FrontPage2000 ไม่เกี่ยวข้องกับหัวข้อนี้ดังนั้นที่นี่จะถูกละเว้น
โดยสรุปแล้วแต่ละวิธีที่แนะนำข้างต้นมีเทคโนโลยีใหม่ ๆ มากมายซึ่งไม่สามารถเจาะได้เนื่องจากความยาว บทความนี้ต้องการแนะนำวิธีการต่าง ๆ ของการเขียนโปรแกรมเว็บ ASP ผ่านตัวอย่างที่เฉพาะเจาะจงของการเปลี่ยนหน้า การเขียนโปรแกรมเพจ;