บทที่ 5 คอลัมน์เมนูหมายเหตุและการดำเนินการตอบกลับ
จริงๆ แล้วหน้าแรกที่กรอกในบทที่ 4 นั้นไม่สมบูรณ์มาก ประการแรก ไม่มีลิงก์ในคอลัมน์เมนูบันทึกย่อและไม่สามารถคลิกได้ ประการที่สอง หากคุณคลิกที่ชื่อบันทึก คุณจะไม่สามารถเชื่อมโยงได้ ไปยังหน้าตอบกลับ ประการที่สาม หากคุณคลิกที่ผู้เขียน คุณจะไม่สามารถเชื่อมโยงไปยังข้อมูลของผู้เขียนได้ ฟังก์ชั่นเหล่านี้จะได้รับการปรับปรุงในบทนี้
: แก้ไขไฮเปอร์ลิงก์ของคอลัมน์เมนูในเทมเพลต bkblog.dwt.aspx จากนั้นอัปเดตหน้าเว็บทั้งหมด เมื่อเปิดหน้าแรก ให้เรียกดูเพื่อแสดงเนื้อหาของบันทึกการศึกษา ลำดับเวลาจากมากไปน้อย คลิกที่คอลัมน์เมนู นอกจากนี้ยังสามารถแสดงเนื้อหาบันทึกการศึกษาโดยเรียงลำดับเวลาจากมากไปน้อยตามคอลัมน์ได้อีกด้วย
5.1.1 สร้างเมนูเทมเพลต
(1) เปิดเทมเพลต bkblog.dwt.aspx เลือกข้อความไดนามิก (menuda.LM) สร้างไฮเปอร์ลิงก์ ลิงก์ไปยังหน้าแรก (index.aspx) เลือก [มุมมองการแสดงโค้ด] และย้าย เลื่อนเมาส์ไปที่ตำแหน่งที่มีเส้นแนวตั้งสีแดงแสดงในรูปที่ 5-1-1 (ไม่มีคำแนะนำพิเศษด้านล่าง สัญลักษณ์ทั้งหมดเป็นตัวอักษรภาษาอังกฤษ)
รูปที่ 5-1-1 เลื่อนเมาส์ไปที่ link คุณลักษณะ
(2) ป้อน "?menanw=" (menanw คือตัวแปรพารามิเตอร์) สลับไปที่แผง [Binding] ลากฟิลด์ LMID ใต้ชุดข้อมูล (menuda) ไปที่ เมื่อสักครู่นี้ หลังจากใส่เครื่องหมายเท่ากับแล้ว ผลลัพธ์จะแสดงดังรูปที่ 5-1-2:
รูปที่ 5-1-2 แทรกไดนามิกแอททริบิวต์ (a.href)
(3) สลับไปที่แผง [Server Behavior] คุณจะเห็นว่าพฤติกรรมของเซิร์ฟเวอร์ได้ถูกเพิ่มเข้าไปแล้ว: ไดนามิกแอททริบิวต์ (a.href) ดังแสดงในรูปที่ 5 -1-3 :
รูปที่ 5-1-3 แผงพฤติกรรมเซิร์ฟเวอร์
(4) เลือกเมนู "หน้าแรก" และสร้างลิงก์ไปยัง index.aspx เลือก "ติดต่อเรา" และสร้างลิงก์ไปยัง mailto:[email protected]
(5) บันทึกเทมเพลต bkblog.dwt.aspx จากนั้นกล่องโต้ตอบที่แสดงในรูปที่ 5-1-4 จะปรากฏขึ้น
รูปที่ 5-1-4 กล่องโต้ตอบอัพเดตไฟล์เทมเพลต
(6) คลิกปุ่ม "อัปเดต" เพื่อกรอกข้อมูลคอลัมน์เมนูบันทึกย่อและอัปเดตหน้าแรกของดัชนี aspx
5.1.2 ใช้การแสดงคอลัมน์บนหน้าแรก
(1) เปิดหน้าแรก index.aspx สลับไปที่แผง [พฤติกรรมเซิร์ฟเวอร์] ดับเบิลคลิกที่ชุดข้อมูล (Ztre) และในกล่องโต้ตอบชุดข้อมูลป๊อปอัป ให้คลิกปุ่ม "ขั้นสูง" ดังแสดงในรูปที่ 5-1-5 เลือกคำสั่ง SQL ในพื้นที่ข้อความ [SQL] ที่จะคัดลอก ขอแนะนำให้วางลงใน Notepad หรือข้อความ Word ที่สร้างขึ้นใหม่ ซึ่งจะเป็นประโยชน์อย่างยิ่งในขั้นตอนต่อๆ ไป (คุณสามารถข้ามขั้นตอนนี้หากคุณคุ้นเคยกับ SQL ภาษา) .
รูปที่ 5-1-5 กล่องโต้ตอบขั้นสูงของชุดข้อมูล
(2) คลิกปุ่ม "Simple" เลือกฟิลด์ตัวกรองเป็น LMID ในเมนูแบบเลื่อนลง [Filter] เลือก "พารามิเตอร์ URL" เป็นวิธีการถ่ายโอนพารามิเตอร์ และอินพุต ตัวแปรพารามิเตอร์คือ menanw กดปุ่ม "OK" ผลลัพธ์จะแสดงดังรูปที่ 5-1-6:
รูปที่ 5-1-6 แก้ไขชุดข้อมูล Ztre เพื่อกรอง
(3) เรียกดูหน้าแรกด้วย IE แต่ผลการสืบค้นจะไม่ถูกบันทึก ดังแสดงในรูปที่ 5-1-7
รูปที่ 5-1-7 รูปภาพการเรียกดูหน้าแรก
(4) ในการเรียกดู IE หน้าแรก ให้คลิกลิงก์ "Network Programming" ผลลัพธ์จะแสดงในรูปที่ 4-3-3 ในบทที่แล้ว แสดงบันทึกการศึกษาการเขียนโปรแกรมเครือข่ายทั้งหมด .
"เดี๋ยวก่อน นี้ไม่สอดคล้องกับแนวคิดการออกแบบเดิม! สามารถแสดงเป็นคอลัมน์เท่านั้น ไม่ใช่บันทึกการศึกษาทั้งหมด!" นอกจากนี้ยังมีปัญหาในการถ่ายโอนข้อมูลระหว่างเพจ ASP.NET: ข้อมูลระหว่างแบบฟอร์มในแอปพลิเคชัน Windows การถ่ายโอนสามารถทำได้โดยการกำหนดตัวแปรส่วนกลาง (ตัวแปรคงที่สาธารณะ) และวิธีการอื่นๆ อย่างไรก็ตาม วิธีการเหล่านี้ไม่สามารถใช้ในการถ่ายโอนข้อมูลระหว่างเว็บเพจใน ASP.NET ตัวอย่างเช่น: เมื่อคุณคลิกที่แถบนำทางชุดข้อมูล ข้อมูลของ Ztre_currentPage จะถูกถ่ายโอน แต่ข้อมูลของ menanw ไม่สามารถถ่ายโอนได้ กล่าวคือ เมื่อคุณคลิกที่ไฮเปอร์ลิงก์ใดๆ ของแถบนำทางชุดข้อมูล ข้อมูลนั้นจะถูกถ่ายโอน การถ่ายโอนโดย menan จะเป็นโมฆะเสมอ ซึ่งเป็นไปไม่ได้ ไม่เพียงแต่จะรับรู้ถึงการแสดงคอลัมน์เท่านั้น แต่ยังดำเนินการแสดงเพจภายใต้คอลัมน์ในเวลาเดียวกันอีกด้วย นี่คือวิธีแก้ปัญหาโดยใช้เซสชันเพื่อส่งพารามิเตอร์
(5) เพื่อที่จะส่งผ่านตัวแปรพารามิเตอร์ menanw ไปยัง session("menanw") ให้สลับไปที่มุมมองโค้ดและแทรกโค้ดที่แสดงในวงกลมสีแดงในรูปที่ 5-1-8 ก่อนแท็ก <html>
รูปที่ 5-1-8 ใส่เพจลงใน index.aspx เพื่อโหลดฟังก์ชันเริ่มต้น
(6) เลือกชุดข้อมูล (Ztre) ในแผง [Server Behavior] ดังแสดงในรูปที่ 5-1-9 ส่วนสีดำคือ รหัสคำจำกัดความชุดข้อมูล (Ztre)
รูปที่ 5-1-9 รหัสของชุดข้อมูล Ztre
(7) ค้นหาโค้ด:
CommandText='<%# "SELECT * FROM ZTRE WHERE LMID = ? ORDER BY ZITIME ASC" %>'
เปลี่ยนโค้ดข้างต้นเป็น:
CommandText=' <%# IIf(((request.QueryString("menanw")<>nothing) or Request.QueryString("Ztre_CurrentPage") <> Nothing),"SELECT * FROM ZTRE WHERE LMID = ? ORDER BY ZITIME DESC", "SELECT" * จาก ZTRE ORDER BY ZITIME DESC") %>'
(8) พบโค้ด:
<Parameter Name="@LMID" Value='<%# IIf((request.QueryString("menanw") <> Nothing) คำขอ QueryString("menanw"), "") %>' Type="Integer" /></Parameters></MM:DataSet>
เปลี่ยนโค้ดข้างต้นเป็น:
<Parameter Name="@LMID" Value='<% # IIf((session("menanw") <> Nothing), session("menanw"), "") %>' Type="Integer" /></Parameters></MM:DataSet>
(9) ดำเนินการเรียกดู IE ผลลัพธ์ดังแสดงในรูปที่ 4-3-3 ของบทที่ 4 เติมเต็มแนวคิดการออกแบบที่กำหนดไว้
แนวคิดการออกแบบการใช้งานหน้าตอบกลับ: เมื่อคลิกที่ชื่อบันทึก จะสามารถเชื่อมโยงหน้าได้ รวมถึงบันทึกย่อและการตอบกลับที่เกี่ยวข้องทั้งหมด จากหัวข้อที่แล้วจะเห็นได้ว่าไม่ใช่เรื่องยาก สามารถทำได้โดยการส่งพารามิเตอร์โค้ดของบันทึกนี้ไปที่ไฮเปอร์ลิงก์ของชื่อบันทึกเท่านั้น
5.2.1 การออกแบบเพจพื้นฐาน
(1) สร้างเพจไดนามิก ASP.NET VB ใหม่ hf.aspx ที่สร้างโดยเทมเพลต bkblog.dwt.aspx แทรกตาราง ztre ในพื้นที่ที่แก้ไขได้ของ mainbody และดำเนินการออกแบบที่เกี่ยวข้อง ผลลัพธ์จะปรากฏขึ้น ในรูปที่ 5-2 -1 แสดง:
รูปที่ 5-2-1 แผนภาพการออกแบบตาราง ztre
(2) เริ่ม Access2003 สร้างตาราง FH, แบบสอบถามการเชื่อมต่อตาราง YH HFRE ในความเป็นจริงมุมมองการเชื่อมต่อและฟิลด์การแสดงผลจะแสดงในรูปที่ 5-2-2
รูปที่ 5-2-2 ค้นหาการออกแบบที่เกี่ยวข้องของ HFRE
(3) ทำตามขั้นตอน (1)-(3) ในส่วน 4.2.2 Data Set เพื่อเพิ่มชุดข้อมูล Ztre ลากฟิลด์ไปยังตำแหน่งที่สอดคล้องกัน และดำเนินการข้อความแบบไดนามิก การตั้งค่ารูปแบบ (Ztre. ZYTEXT) ผลลัพธ์จะแสดงดังรูปที่ 5-2-3:
รูปที่ 5-2-3 ผูกข้อมูลเข้ากับตาราง ztre
(4) แก้ไขชุดข้อมูล Ztre เพื่อกรอง ฟิลด์ตัวกรองคือ ZTID เลือก "พารามิเตอร์ URL" เป็นวิธีการถ่ายโอนพารามิเตอร์ และตัวแปรพารามิเตอร์อินพุตคือ ztanw
(5) เพิ่มชุดข้อมูล Hfre ฟิลด์ตัวกรองคือ ZTID เลือก "พารามิเตอร์ URL" เป็นวิธีการถ่ายโอนพารามิเตอร์ และตัวแปรพารามิเตอร์อินพุตคือ ztanw ผลลัพธ์จะแสดงในรูปที่ 5-2-4:
รูปที่ 5-2-4 การออกแบบชุดข้อมูล Hfre
(6) ลากฟิลด์ Hfre ชุดข้อมูลไปยังตำแหน่งที่สอดคล้องกันของตาราง ztre ตั้งค่าการตั้งค่ารูปแบบของข้อความไดนามิก (Htre.HFTEXT) เป็น "การเข้ารหัส—รูปแบบการเข้ารหัส HTML " และเปลี่ยนฟิลด์แรกของตาราง ztre บรรทัดที่ 5, 6 และ 7 ถูกกำหนดให้เป็นพื้นที่ทำซ้ำ และข้อมูลจะถูกเพจลงในตาราง ztre ผลลัพธ์แสดงในรูปที่ 5-2-5:
รูปที่ 5-2-5 ผูกชุดข้อมูล Htre เข้ากับตาราง ztre
(7) เปิดหน้าแรก index.aspx เลือกข้อความไดนามิก (Ztre.ZTNAME) สร้างไฮเปอร์ลิงก์ ลิงก์ไปยัง hf.aspx สลับไปที่โค้ด ดูและใส่ลิงค์ เปลี่ยนแอตทริบิวต์เป็น: hf.aspx?ztanw= หลังจากลากฟิลด์ ZTID ใต้ชุดข้อมูล Ztre ไปเป็นเครื่องหมายเท่ากับ ผลลัพธ์จะเป็นดังรูปที่ 5-2-6:
รูปที่ 5-2-6 เพิ่มไดนามิกไฮเปอร์ลิงก์ในโค้ด
(8) บันทึก hf.aspx และ index.asps ป้อนบันทึกสองสามรายการลงในตาราง HF และตาราง YH ที่เกี่ยวข้องใน Access และเรียกดู index.asps ในเบราว์เซอร์ IE คลิกที่ หัวข้อบันทึกการศึกษาพร้อมคำตอบ ดังรูปที่ 5-2-7
รูปที่ 5-2-7 การแสดงหน้าตอบกลับ
(9) จากนั้นคลิกไฮเปอร์ลิงก์ใดๆ ในการนำทางชุดข้อมูล ผลลัพธ์จะเป็นดังรูปที่ 5-2-8:
รูปที่ 5-2-8 ผลลัพธ์ของหน้าหลังจากคลิกที่การนำทางชุดข้อมูล
! ไปหมดแล้ว! นี่เป็นปัญหาของการถ่ายโอนข้อมูลระหว่างเว็บเพจ ASP.NET จะต้องแก้ไขตามข้อ 5.1
(10) สลับไปที่มุมมองโค้ดและแทรกโค้ดที่แสดงในวงกลมสีแดงในรูปที่ 5-2-9 ก่อนแท็ก <html>
รูปที่ 5-2-9 แทรกเพจลงใน hf.aspx เพื่อโหลดฟังก์ชันเริ่มต้น
(11) ค้นหาโค้ดในชุดข้อมูล Ztre:
<Parameter Name="@ZTID" Value='<%# IIf((request.QueryString" ("ztanw ") <> Nothing), request.QueryString("ztanw"), "") %>' Type="Integer" />
แทนที่ request.QueryString("ztanw") ในโค้ดข้างต้นด้วย session("ztanw "), โค้ดผลลัพธ์ได้รับการแก้ไขเป็น
<Parameter Name="@ZTID" Value='<%# IIf((session("ztanw")<> Nothing), session("ztanw"), "") %>' Type="Integer" />
(12) ค้นหาโค้ดในชุดข้อมูล Hfre:
<Parameter Name="@ZTID" Value='<%# IIf((request.QueryString("ztanw") <> Nothing), request .QueryString("ztanw" ), "") %>' Type="Integer" />
แทนที่ request.QueryString("ztanw") ในโค้ดด้านบนด้วย session("ztanw") และโค้ดผลลัพธ์จะถูกแก้ไขเป็น
< ชื่อพารามิเตอร์="@ZTID" Value= '<%# IIf((session("ztanw")<> Nothing), session("ztanw"), "") %>' Type="Integer" />
(13) บันทึก hf.aspx