มารู้จักวิธีการบันทึกข้อมูลจาก Microsoft Form ลง List ใน SharePoint ด้วยเจ้าเครื่องมือ Power Automate กันเถอะ (EP.2 : ลงมือสร้าง Flow ด้วย Power Automate)

            หลังจากที่ EP. ที่แล้ว เราได้มีการเตรียมเครื่องมือ อุปกรณ์ทั้งในส่วนของแบบฟอร์มที่จะใช้ในการกรอกข้อมูล และลิสต์ที่ใช้ในการเก็บข้อมูลกันไปแล้ว แต่ถ้าใครยังไม่เคยอ่าน สามารถติดตามได้ที่ลิงค์นี้นะคะ มารู้จักวิธีการบันทึกข้อมูลจาก Microsoft Form ลง List ใน SharePoint ด้วยเจ้าเครื่องมือ Power Automate กันเถอะ (EP.1 : ขั้นตอนการเตรียมตัว) และมาถึง EP.นี้ ก็ได้เวลาลงมือสร้าง Flow ที่จะควบคุมการทำงานแบบอัตโนมัติ ที่จะช่วยลดขั้นตอนการทำงานให้กับเราได้โดยที่เราไม่ต้องลงมือเองกันแล้ว และเพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มขั้นตอนต่อไปกันเลยดีกว่านะคะ ขั้นตอนการสร้าง Flow โดยใช้ Power Automate  1.ไปยัง Power Automate เพื่อสร้าง Flow การทำงานที่เราต้องการ โดยการกดปุ่ม เพื่อเลือก Apps ที่เป็น Power Automate จาก Microsoft 365 ที่เราต้องการเช่นเคยค่ะ 2. สร้าง Flow : โดยการกดปุ่ม Create ที่ฝั่งซ้ายมือ และเลือกรูปแบบ Flow ที่ต้องการ ซึ่งมีทั้งแบบที่สร้างใหม่ด้วยตนเองและสร้างจากต้นแบบที่มีก็ได้ แต่สำหรับกรณีนี้ขอเลือกแบบ Automated cloud flow นะคะ 3. ระบุชื่อ Flow และเหตุการณ์ที่ต้องการให้ทำงานอัตโนมัติ : เมื่อเลือกรูปแบบ Flow ที่ต้องการได้แล้ว เราจะต้องตั้งชื่อ Flow และทำการเลือกเหตุการณ์ที่เราต้องการให้ระบบทำงานอัตโนมัติกันค่ะ ซึ่งในที่นี้ขอเลือกเป็นเหตุการณ์ที่แบบฟอร์มมีการบันทึกข้อมูล หรือตัวเลือก “When a new response is submitted” ตามภาพค่ะ 4. เลือกแบบฟอร์มที่จะใช้ในการบันทึกข้อมูล : หลังจากระบุเหตุการณ์เรียบร้อยแล้ว เราจะต้องทำการเลือกแบบฟอร์มที่เราสนใจหลังมีการบันทึกข้อมูล โดยเลือกระบุในค่า Form Id โดยระบบจะแสดงตัวเลือกแบบฟอร์มที่เราสร้างขึ้นไว้ทั้งหมดมาให้เลือก ในที่นี้ขอเลือก “แบบฟอร์มยืมอุปกรณ์ในหน่วยงาน” นะคะ 5. สร้างขั้นตอนถัดไป : หลังจากเลือกแบบฟอร์มที่เราต้องการนำข้อมูลมาบันทึกเรียบร้อยแล้ว ให้เลือก New Step เพื่อกำหนดขั้นตอนการทำงานขั้นต่อไป ตามภาพค่ะ 6. ระบุเนื้อหาที่ต้องการใช้งาน : โดยขั้นตอนการทำงานต่อไปที่เราต้องดำเนินการก็คือ การนำเนื้อหาของแบบฟอร์มที่เราต้องการมาใช้งานค่ะ โดยเราจะต้องเลือก “Get response details” ซึ่งขอแนะนำวิธีในการค้นหาให้ง่ายขึ้นโดยการใส่คำค้น “Microsoft Form” ลงไป เพื่อให้ค้นหาได้ง่ายขึ้น เนื่องจากแบบฟอร์มของเราเป็น Microsoft Form นั่นเอง แต่หากแบบฟอร์มที่ท่านต้องการใช้เป็นชนิดอื่น ก็สามารถค้นหาตามชนิดนั้นๆได้ค่ะ 7. ระบุแบบฟอร์มและ Response Id : หลังจากนั้น ระบบจะแสดงหน้าจอให้ทำการระบุแบบฟอร์มที่ต้องการเอาเนื้อหาข้อมูลมาใช้งาน และกำหนด Response Id 8. การระบุแบบฟอ์มทำเช่นเดียวกับที่ได้กล่าวไว้แล้วข้างต้น หลังจากนั้นให้ทำการเลือก Response Id จากแบบฟอร์ม ตามภาพได้เลยค่ะ 9. เมื่อกำหนดค่าต่างๆเรียบร้อยแล้ว จะได้ผลลัพธ์ดังภาพ ให้ทำการสร้างขั้นตอนถัดไป โดยการกดปุ่ม New Step เพื่อจัดการขั้นต่อไปกันเลยค่ะ 10. ระบุ SharePoint และลิสต์ที่ใช้ในการบันทึกข้อมูล : ขั้นตอนถัดมา ถึงเวลาที่เราจะต้องระบุว่าข้อมูลจากแบบฟอร์มที่เราระบุในขั้นตอนก่อนหน้านี้จะนำไปบันทึกลงที่ใด โดยในที่นี้จะบันทึกลงลิสต์ใน SharePoint ที่เราเตรียมไว้กันนะคะ โดยการใช้คำค้น “Sharepoint” และเลือก “Create Item” เพื่อให้ข้อมูลจากแบบฟอร์มที่เราได้มาถูกบันทึกลงในลิสต์ใน Share Point ที่เราต้องการกันค่ะ 11. โปรแกรมจะให้เราระบุไซต์ของ Share Point และลิสต์ที่เราต้องการเก็บข้อมูล 12. ระบุไซท์ใน SharePoit : เลือกไซต์ Share Point ซึ่งเป็นที่อยู่ของลิสต์ที่เราเตรียมไว้ในการเก็บข้อมูลให้ถูกต้อง 13. ระบุลิสต์ที่ต้องการเก็บข้อมูล : เลือกลิสต์ที่จะใช้ในการเก็บข้อมูลจากแบบฟอร์ม ในกรณีนี้ขอเลือกลิสต์ที่ชื่อว่า “การยืม-คืนอุปกรณ์ในหน่วยงาน” ตามที่ได้สร้างไว้ในขั้นตอนที่ 2 ข้างต้น

Read More »

มารู้จักวิธีการบันทึกข้อมูลจาก Microsoft Form ลง List ใน SharePoint ด้วยเจ้าเครื่องมือ Power Automate กันเถอะ (EP.1 : ขั้นตอนการเตรียมตัว)

               ในปัจจุบันพบว่า มีการใช้งานแบบฟอร์มในรูปแบบออนไลน์มากขึ้น เพื่อความสะดวก และลดการใช้ทรัพยากรกระดาษ ไม่ว่าจะเป็น Google Form หรือ Microsoft form เพื่อรับข้อมูลจากผู้ใช้ เนื่องจากใช้งานง่าย และสะดวก และทำให้ผู้ที่กรอกข้อมูล สามารถกรอกข้อมูลได้จากที่ใดก็ได้โดยไม่ต้องอาศัยการกรอกแบบฟอร์มกระดาษอย่างแต่ก่อน แต่ในส่วนของการเก็บข้อมูลและการนำไปใช้ก็อาจจะมีวิธีการจัดการที่แตกต่างกันออกไป ซึ่งโดยปกติแบบฟอร์มออนไลน์เหล่านี้ก็จะสามารถ Export ข้อมูลออกมาในรูปแบบไฟล์ Excel หรือ CSV ได้อยู่แล้ว แต่สำหรับบทความนี้ ผู้เขียนจะขอหยิบยกวิธีการเก็บข้อมูลจาก Microsoft form มาเก็บในลิสต์(List) ซึ่งเป็นเปรียบเสมือนฐานข้อมูลหรือตารางที่ใช้เก็บข้อมูลใน SharePoint  โดยที่ไม่ต้องมา Import ข้อมูลจากไฟล์ Excel หรือ CSV ที่เรานำมาจากแบบฟอร์มอีก ซึ่งเราจะใช้ตัวช่วยที่ชื่อว่า Power Automate เพื่อมาลดขั้นตอนการทำงานเหล่านี้ให้กับเรากันค่ะ                โดยก่อนที่เราจะเริ่มเรียนรู้วิธีการบันทึกข้อมูลดังกล่าว สิ่งที่เราจะต้องมีเพื่อให้ภารกิจของเราสำเร็จลุล่วง นั่นก็คือ แบบฟอร์ม Microsoft Form ที่ใช้ในการกรอก ลิสต์ใน SharePoint ที่ใช้ในการเก็บข้อมูลจากแบบฟอร์ม Flow ที่สร้างจาก Power Automate ที่ใช้ในการบันทึกข้อมูลจากแบบฟอร์มลงในลิสต์นั่นเองค่ะ หมายเหตุ : ในบทความนี้ ผู้ใช้จะไม่ขอลงรายละเอียดในส่วนของการสร้างฟอร์ม และลิสต์ที่ใช้เก็บข้อมูลใน SharePoint แต่จะขอเน้นไปที่วิธีการสร้าง Flow ใน Power Automate เพื่อบันทึกข้อมูลแทนนะคะ และการใช้งาน Microsoft Form SharePoint และ Power Automate จริงๆแล้วสามารถเข้าใช้งานได้จากหลายช่องทาง แต่ในตัวอย่างนี้จะใช้ผ่าน Office 365 นะคะ                โดยใน EP. นี้จะเป็นขั้นตอนการจัดเตรียมอุปกรณ์ในข้อ 1 และ 2 ให้เรียบร้อยก่อน จึงจะไปสร้าง Flow ในขั้นตอนที่ 3 ให้โปรแกรมทำงานอัตโนมัติกันใน EP. ถัดไปนะคะ เพื่อไม่ให้เป็นการเสียเวลา เรามาเริ่มขั้นตอนการจัดเตรียมเครื่องมือใน 2 ขั้นตอนแรก กันเลยดีกว่าค่ะ ขั้นตอนที่ 1 : การจัดเตรียมแบบฟอร์ม Microsoft Form โดยเราจะเตรียมและสร้างแบบฟอร์ม Microsoft Form ที่ต้องการให้เรียบร้อย ซึ่งจะต้องมีการระบุชนิดและการบังคับกรอกในข้อมูลแต่ละรายการให้ครบถ้วน โดยจะขอแนะนำวิธีการคร่าวๆ ดังนี้ 1.ไปยังแบบฟอร์ม โดยการกดปุ่มเพื่อเลือก Apps ที่เป็น Form จาก Microsoft 365 ที่เราต้องการกันค่ะ 2. หลังจากนั้นจะแสดงรายการ App ใน Microsoft Office365 มาให้เลือก ในที่นี้ขอเลือก Form ดังภาพ 3. จะปรากฎหน้าจอและปุ่มให้สร้างแบบฟอร์ม ให้กดลูกศร และเลือก New Form ตามภาพ 4. หลังจากนั้นให้ทำการระบุข้อมูลที่ต้องกรอกในแบบฟอร์ม พร้อมระบุชนิด และการบังคับกรอกของข้อมูลให้เรียบร้อย และสามารถเลือกสไตล์ให้กับแบบฟอร์มของเราเพื่อเพิ่มความสวยงามได้ด้วยเช่นกันนะคะ โดยเริ่มจากการตั้งชื่อแบบฟอร์ม และกดปุ่ม Add new เพื่อเพิ่มข้อในแบบฟอร์มของเรากันค่ะ 5. หากเราเคยมีการทำแบบฟอร์มและใส่หัวข้อก่อนหน้านี้ โปรแกรมจะดึงข้อมูลที่เราเคยทำไว้มาแนะนำ เพื่อช่วยอำนวยความสะดวกให้กับเรา กรณีที่ข้อมูลหัวข้อคล้ายๆกัน และไม่ต้องระบุใหม่ทั้งหมด โดยจะเลือกจากส่วนของ Recommended ค่ะ หรือเราจะเลือกสร้างใหม่เองก็ได้นะคะ 6. ในกรณีที่ต้องการเพิ่มข้อใหม่ที่ไม่ได้มาจากส่วนของการแนะนำ(Recommended) โปรแกรมจะแสดงหน้าจอให้เราระบุค่าต่างๆ จะเห็นว่า ในการสร้างหัวข้อใหม่แต่ละรายการ เราสามารถระบุชนิดของข้อมูล ซึ่งมีให้เลือกหลายแบบ ดังภาพ 7. หลังจากนั้น ให้ทำการระบุชื่อหัวข้อ และสามารถระบุค่าต่างๆได้ ดังนี้ 8. หลังจากที่ได้สร้างแบบฟอร์มและกำหนดค่าต่างๆในแต่ละข้อของแบบฟอร์มเรียบร้อยแล้วจะได้ผลลัพธ์ดังภาพค่ะ ตัวอย่างของแบบฟอร์มที่ใช้ในการกรอกข้อมูลในมุมมองของผู้กรอก 2. ตัวอย่างหน้าจอการกรอกข้อมูลในแบบฟอร์ม เพิ่มเติม ท่านสามารถ Copy

Read More »

เรียนรู้เบื้องต้นกับการใส่ลายน้ำ(Watermark)ให้กับเอกสาร PDF ของเราด้วย iTextSharp

               ในบทความนี้เราก็ยังคงอยู่กับเรื่องการทำภาพลายน้ำอย่างต่อเนื่องจาก EP. ที่แล้วที่พูดถึงการทำข้อความลายน้ำบนภาพที่เราทำการอัพโหลด ถ้าใครยังไม่ได้อ่านสามารถตามไปอ่านกันได้ ที่นี่ นะคะแต่สำหรับ EP. นี้เราจะขอเปลี่ยนบรรยากาศไปทำ ลายน้ำบนไฟล์ PDF โดยใช้เครื่องมือ iTextSharp กันบ้าง เผื่อว่าผู้อ่านบางท่านที่อาจจะกำลังใช้งาน iTextSharp ในการจัดทำไฟล์ PDF อยู่พอดี และอยากจะลองใส่ลายน้ำให้กับงานเอกสารของท่านดูบ้าง จะได้สามารถนำวิธีการนี้ไปประยุกต์ใช้กับงานของตนได้ไม่ทางใดก็ทางหนึ่งนะคะ โดยตัวอย่างที่จะนำมาแนะนำกันจะมีทั้งแบบลายน้ำที่เป็นข้อความ และลายน้ำที่เป็นภาพค่ะ นอกจากนี้ก็ยังมีทั้งแบบที่เป็นการทำภาพลายน้ำทับไฟล์เดิมที่มีอยู่ และแบบที่ทำภาพลายน้ำและบันทึกเป็นไฟล์ใหม่ค่ะ ผู้อ่านจะได้ลองในหลายๆวิธี และสามารถเลือกไปปรับใช้ให้เหมาะกับงานของแต่ละท่านได้เพื่อไม่ให้เป็นการเสียเวลา งั้นเรามาเริ่มทำภาพลายน้ำบนงานเอกสาร PDF ของเรากันเลยดีกว่าค่ะ แบบที่ 1 : การสร้างลายน้ำแบบข้อความ ซึ่งวิธีการนี้ จะมีการทำ Template ต้นฉบับของลายน้ำแบบข้อความไว้ก่อน และเมื่อต้องการทำไฟล์ลายน้ำ จะต้องทำการอ่านไฟล์ลายน้ำจากต้นแบบมาจัดทำลายน้ำบนไฟล์ที่ต้องการได้ ดังนี้ค่ะ 1.1 ระบุ Library เพิ่มเติม using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; 1.2 สร้างเมธอดในการสร้าง Template ลายน้ำต้นฉบับ เพื่อใช้ในการทำลายน้ำให้กับไฟล์ PDF ที่ต้องการ ////กรณียังไม่เคยสร้างหรือมี Template มาก่อน ให้เรียกใช้งาน CreateTemplate(“ข้อความที่ต้องการให้แสดงในเทมเพลต”,พาธที่จะสร้างไฟล์เทมเพลตดังกล่าว) public void CreateTemplate(string watermarkText, string targetFileName) { var document = new Document(); ////ระบุพาธที่ต้องการสร้างไฟล์เทมเพลต var pdfWriter = PdfWriter.GetInstance(document, new FileStream(targetFileName, FileMode.Create)); ///ระบุค่าต่างๆเกี่ยวกับตัวอักษรที่จะแสดงผลในเทมเพลตลายน้ำที่สร้างขึ้น var font = new Font(Font.FontFamily.HELVETICA, 60, Font.NORMAL, BaseColor.LIGHT_GRAY); document.Open(); ////ระบุค่าข้อความ และค่าต่างๆให้กับลายน้ำที่ต้องการ ColumnText.ShowTextAligned(pdfWriter.DirectContent, Element.ALIGN_CENTER, new Phrase(watermarkText, font), 300, 400, 45); document.Close(); } ตัวอย่าง ไฟล์ PDF ของ Template ลายน้ำที่ได้จากการเรียกใช้งานเมธอด CreateTemplate ข้างต้น 1.3 สร้างเมธอดในการจัดทำลายน้ำข้อความให้กับไฟล์ PDF จาก template ลายน้ำต้นฉบับ public void AddTextWatermark(string sourceFilePath, string watermarkTemplatePath, string targetFilePath) { ///ระบุพาธไฟล์ต้นทางที่ต้องการทำข้อความลายน้ำ var pdfReaderSource = new PdfReader(sourceFilePath); ///ระบุพาธไฟล์ปลายทางที่ต้องการบันทึกไฟล์แบบมีลายน้ำ var pdfStamper = new PdfStamper(pdfReaderSource, new FileStream(targetFilePath, FileMode.Create)); ///ระบุพาธของไฟล์ต้นแบบลายน้ำที่จัดทำไว้ var pdfReaderTemplate = new PdfReader(watermarkTemplatePath); var page = pdfStamper.GetImportedPage(pdfReaderTemplate, 1); ///ทำการวนลูปเพื่อทำลายน้ำให้กับไฟล์ PDF ทีละหน้า for (var i = 0; i < pdfReaderSource.NumberOfPages; i++) { ///ระบุตำแหน่งในการแสดงผลลายน้ำกับเนื้อหาในไฟล์ PDF กรณีนี้คือวางไว้ใต้เนื้อหา แต่หากต้องการให้อยู่บนเนื้อหาให้เปลี่ยนเป็น GetOverContent แทน var content = pdfStamper.GetUnderContent(i + 1); content.AddTemplate(page, 0, 0); } pdfStamper.Close(); pdfReaderTemplate.Close(); } 1.4 เรียกใช้งานเมธอดเพื่อทำลายน้ำให้กับไฟล์ PDF ที่ต้องการ(กรณีนี้สมมุติให้เป็นการกดปุ่มเพื่อเรียกใช้งานเมธอดดังกล่าว) protected void btnGenWatermark_Click(object sender,

Read More »

มาลองใส่ข้อความ/ภาพลายน้ำ(Watermark) บนรูปภาพที่เราอัพโหลดด้วย C# กันเถอะ

          ในการทำงานของนักพัฒนาโปรแกรม อาจจะมีบางงานที่มีความเกี่ยวข้องกับการบันทึกข้อมูลรูปภาพต่างๆลงบนเซิร์ฟเวอร์ และอาจมีความต้องการที่จะใส่ลายน้ำให้กับรูปภาพเหล่านั้น ซึ่งจริงๆแล้วการทำลายน้ำนั้น ถือเป็นกระบวนการหนึ่งในการคุ้มครองลิขสิทธิ์ ป้องกัน หรือปกป้องลิขสิทธิ์ของเจ้าของภาพผู้อัพโหลดข้อมูลหรือเป็นการแจ้งที่มาของภาพนั้นๆ เพื่อไม่ให้ผู้อื่นนำไปใช้ในทางมิชอบ และทำให้มั่นใจได้ว่าจะไม่สามารถนำกลับมาใช้ซ้ำหรือเปลี่ยนแปลงได้โดยไม่ได้รับอนุญาต นอกจากนี้ยังอาจใช้เป็นกลยุทธ์ในการสร้างแบรนด์ให้กับงานของคุณได้ หรืออาจทำหน้าที่เป็นตราประทับเพื่อระบุสถานะของเอกสารโดยมีคำเช่น “สำเนา” “ฉบับร่าง” หรือ “ตัวอย่าง” ซึ่งช่วยให้มั่นใจได้ว่าจะไม่มีการจัดการเอกสารสำคัญอย่างไม่ถูกต้อง อีกทั้งยังช่วยให้คุณสามารถจัดระเบียบงานของคุณได้ในขณะที่คุณทำเอกสารฉบับร่างให้เป็นเอกสารฉบับจริง           และสำหรับในบทความนี้ทางผู้เขียนจึงถือโอกาสมาแนะนำวิธีการทำภาพลายน้ำให้กับรูปภาพที่เราบันทึกข้อมูลจากการอัพโหลดไฟล์โดยระบบที่พัฒนาขึ้นกันค่ะ โดยวิธีการเพิ่มลายน้ำสามารถทำได้หลายทาง อาจจะเป็นการนำรูปภาพทั้งหมดที่มีการอัพโหลดมาตกแต่งด้วยโปรแกรมตกแต่งภาพ แต่ในกรณีนี้ ผู้เขียนจะขอแนะนำวิธีเบื้องต้นในการพัฒนาโปรแกรมในการใส่ลายน้ำให้กับภาพตอนอัพโหลดไฟล์ด้วย C#  เพื่อเป็นแนวทางให้กับผู้อ่านได้นำไปต่อยอดงานพัฒนาของตนเองได้ ซึ่งในบทความนี้จะแบ่งวิธีที่มาแนะนำการใส่ลายน้ำให้กับรูปภาพที่อัพโหลดออกเป็น 2 แบบดังนี้ค่ะ 1.การใส่ลายน้ำแบบข้อความ โดยการทำลายน้ำด้วยวิธีนี้ เราจะต้องมีการระบุข้อความที่เราต้องการให้แสดงลายน้ำในภาพที่ทำการอัพโหลด ซึ่งขั้นตอนการทำลายน้ำ มีดังนี้ 1.1 เพิ่ม Library ที่เกี่ยวข้องเพิ่มเติมเข้ามา using System.IO;using System.Drawing; 1.2 สร้างหน้าจอที่มี File upload และปุ่มเพื่อทำการอัพโหลดไฟล์ .aspx page 1.3 สร้างเมธอดที่ใช้ในการสร้างภาพลายน้ำ ที่ชื่อว่า AddTextWatermark() โดยมีพารามิเตอร์เป็นข้อความที่ต้องการให้แสดงเป็นลายน้ำ ดังนี้ Code C# เมธอด AddTextWatermark เรียกใช้เมธอดเมื่อกดปุ่ม Upload โดยส่งพารามิเตอร์เป็นข้อความที่ต้องการให้แสดงลายน้ำบนภาพไป ผลลัพธ์ตัวอย่าง เพิ่มเติม หากต้องการเปลี่ยนตำแหน่งของภาพลายน้ำ สามารถทำได้หลายแบบ โดยผู้เขียนจะขอยกตัวอย่างกรณีที่ต้องการให้ภาพลายน้ำอยู่ตำแหน่งขวาล่าง ซึ่งปรับแก้เพิ่มเติม ดังนี้เปลี่ยนจาก/////กำหนดจุดหมุนจากจุดกึ่งกลางภาพ และหมุนให้ข้อความเอียง 45 องศาg.TranslateTransform(bmp.Width / 2, bmp.Height / 2);g.RotateTransform(45);////ระบุข้อความ ลักษณะตัวอักษร สีและตำแหน่งในการวางข้อความลงบนรูปภาพที่กำหนด โดยจะกำหนดให้อยู่กึ่งกลางภาพแบบทะแยงมุม 45 องศาg.DrawString(watermarkText, drawFont, drawBrush, -(textSize.Width / 2), -(textSize.Height / 2));System.Drawing.Image newImage = (System.Drawing.Image)bmp;เป็น Point position = new Point((bmp.Width – ((int)textSize.Width + 10)), (bmp.Height – ((int)textSize.Height + 10)));////ระบุข้อความ ลักษณะตัวอักษร สีและตำแหน่งในการวางข้อความลงบนรูปภาพที่กำหนด โดยจะกำหนดให้อยู่ขวาล่างแทนg.DrawString(watermarkText, drawFont, drawBrush, position); แทน ในการนำไปใช้งานจริง ในส่วนของตำแหน่ง สีและขนาดตัวอักษร ท่านสามารถระบุได้ตามความเหมาะสมเพื่อให้รองรับกับการใช้งานจริง ในตัวอย่างเป็นเพียงกรณีศึกษาเท่านั้นค่ะ ตัวอย่างผลลัพธ์หลังมีการปรับตำแหน่งการแสดงผลลายน้ำ 2.การใส่ลายน้ำด้วยรูปภาพ หลังจากที่เราได้ลองทำลายน้ำบนภาพด้วยข้อความกันไปแล้ว คราวนี้เราจะลองแบบกรณีที่ต้องการให้นำภาพมาเป็นลายน้ำบนรูปภาพที่ทำการอัพโหลดกันบ้างค่ะ โดยมีวิธี ดังนี้นะคะ Code C# เมธอด AddImageWatermark protected void AddImageWatermark(string watermarkImagePath) { try { ////สร้างตัวแปรชื่อรูปภาพที่จะบันทึกใหม่จากการรอัพโหลดไฟล์โดยผู้ใช้งาน ในชื่อตัวแปร genName string genName = Guid.NewGuid().ToString() + Path.GetExtension(FileUpload.PostedFile.FileName); ////ประกาศตัวแปรของไฟล์รูปภาพที่ทำการอัพโหลด using (Bitmap image = (Bitmap)System.Drawing.Image.FromStream(FileUpload.PostedFile.InputStream)) ////ประกาศตัวแปรไฟล์ภาพที่ต้องการนำมาทำเป็นภาพลายน้ำ using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) using (Graphics imageGraphics = Graphics.FromImage(image)) using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage)) { ////หาจุดตำแหน่งกึ่งกลางภาพที่ต้องการวางภาพลายน้ำ int x = (image.Width / 2 – watermarkImage.Width / 2); int y = (image.Height / 2 – watermarkImage.Height / 2); watermarkBrush.TranslateTransform(x, y); imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height))); ////บันทึกรูปภาพตามที่อยู่(Path)ที่ระบุ image.Save(Server.MapPath(“~/Uploads/”

Read More »

การย่อ-ยุบแถวข้อมูลบน GridView โดยประยุกต์ใช้ร่วมกับ jQuery และ Collapse ใน Bootstrap (C#)

           จากความเดิมตอนที่แล้ว เราได้พูดถึงวิธีการจัดการข้อมูลจำนวนมากด้วยการจัดกลุ่มหมวดหมู่ของข้อมูลใน GridView กันไปแล้ว ซึ่งหากผู้อ่านท่านใดต้องการทราบวิธีการจัดหมวดหมู่สามารถตามดูเนื้อหาในบทความได้จาก การจัดหมวดหมู่แถวของข้อมูลบน GridView ด้วย C# และในส่วนของบทความนี้จะเป็นเนื้อหาต่อยอดการทำงานจากการจัดหมวดหมู่ดังกล่าว โดยเพิ่มความสามารถให้หมวดหมู่หรือกลุ่มเหล่านั้นสามารถย่อ-ยุบได้ เพื่ออำนวยความสะดวกให้กับผู้ใช้ในการดูข้อมูลแยกส่วนกันชัดเจนมากยิ่งขึ้น หรือเพื่อตอบโจทย์ให้กับผู้ใช้บางท่านที่อาจมีความต้องการดูข้อมูลทีละส่วนได้ โดยจะนำ Component ที่ชื่อว่า Collapse ใน Bootstrap มาประยุกต์ใช้ในการแสดงผลร่วมกับ GridView และยังมี jQuery มาเป็นอีกหนึ่งตัวช่วยเพื่อให้สามารถแสดงผลตามที่ต้องการได้ โดยการอธิบายในบทความนี้ ทางผู้เขียนจะขอตัดตอนในส่วนของรายละเอียดขั้นตอนวิธีการจัดหมวดหมู่ไป และข้ามมาพูดถึงขั้นตอนที่ต้องจัดทำเพิ่มเติมในการทำย่อ-ยุบเลยละกันนะคะ            ก่อนจะไปเริ่มในส่วนของการเขียนโค้ด เรามาทำความรู้จักกับ ค่าที่จำเป็นต้องใช้ในการระบุให้กับแถวหลัก(parent)เพื่อให้สามารถย่อยุบได้ กันก่อนนะคะ data-toggle=”collapse” data-target=”.multi-collapse” เพื่อกำหนด target ที่เราต้องการให้ย่อยุบได้ โดยใช้สไตล์ชีทเป็นตัวช่วยเพื่อแยกแต่ละกลุ่มออกจากกัน ซึ่งในที่นี้จะตั้งชื่อสไตล์ชีท multi-collapse ตามด้วยรหัสของประเภทกลุ่มนั้น โดยต้องระบุสไตล์ชีทนี้ให้กับแถวย่อย(child)ด้วย aria-controls=”demo1 demo2 demo3 demo4 demo5” เพื่อกำหนดพื้นที่ที่จะย่อยุบ โดยสามารถกำหนดได้มากกว่า 1 พื้นที่ ซึ่งจะแยกด้วยการเว้นวรรคชื่อ id ของแถวย่อย(child) ในตัวอย่างนี้ คือ แถวย่อยของแถวหลักนี้ ประกอบด้วย 5 แถว คือ แถวที่มี id ชื่อ demo1,demo2,demo3,demo4, demo5 นั่นเอง class = “collapseToggle” เป็นการระบุสไตล์ชีทเพื่อใช้ในการระบุตำแหน่งในการเปลี่ยนไอคอนเวลากดย่อ-ยุบ โดยเรียกใช้งานผ่าน jQuery(ซึ่งจะกล่าวถึงในส่วนถัดไป)            หลังจากเรารู้จักค่าที่จำเป็นต้องใช้กันไปแล้ว เราก็มาเริ่มปรับแก้โค้ดเพิ่มเติม เพื่อเพิ่มความสามารถให้ GridView ของเรากันเลยค่ะ 1. ปรับแก้ในส่วนของ GroupGv_DataBound เพิ่มเติม เพื่อกำหนดค่าที่ระบุไว้ข้างต้นในแถวของหมวดหมู่ที่แทรกเข้ามา 2.จัดทำให้ไอคอนสามารถเปลี่ยนเป็น + หรือ – ได้ เมื่อกดย่อ-ยุบ ด้วย jQuery เพิ่มเติม : ท่านสามารถสร้างสไตล์ชีทตกแต่งเพิ่มเติมให้กับแถวของข้อมูลได้ ในกรณีนี้ได้ทำการสร้างสไตล์ชีทเพื่อไว้สำหรับเวลาเอาเม้าส์ชี้ที่แถวที่สามารถย่อ-ยุบได้ จะแสดงเป็นรูปมือ เพื่อให้ผู้ใช้ทราบว่าสามารถกดได้ค่ะ ผลลัพธ์ เกร็ดความรู้เพิ่มเติม : จากตัวอย่างข้างต้น ตอนเปิดหน้าจอครั้งแรก ทุกหมวดหมู่จะถูกยุบอยู่ หากต้องการให้การแสดงผลครั้งแรก ทุกหมวดหมู่ถูกขยายอยู่ สามารถปรับแก้โค้ดอีกเพียงเล็กน้อย ดังนี้ค่ะ เพิ่มคำว่า “show” เข้าไปในสไตล์ชีทตอนกำหนดให้แถวย่อย ดังนี้ค่ะ แบบเดิม แบบใหม่ 2.ปรับแก้ให้ไอคอนแรกที่ต้องการแสดงเป็นเครื่องหมายลบ ดังนี้ค่ะ แบบเดิม แบบใหม่ ผลลัพธ์           จากตัวอย่าง การแสดงผลครั้งแรกก็จะเปลี่ยนเป็นขยายทั้งหมด และแสดงไอคอนเป็นเครื่องหมายลบ(-)ตั้งต้นไว้ให้ และสามารถย่อ-ยุบตามปกติได้แล้วค่ะ เพิ่มเติม           นอกจากนี้ ผู้เขียนขอแถมให้อีกนิดสำหรับท่านที่ต้องการจะย่อประเภทกลุ่มทั้งหมด หรือต้องการให้แสดงประเภทกลุ่มทั้งหมด อาจจะทำเป็นปุ่มให้ผู้ใช้กด ซึ่งมีวิธี ดังนี้ค่ะ 1. สร้างปุ่ม 2 ปุ่ม เพื่อกดขยายทั้งหมด และย่อทั้งหมด 2. เขียนฟังก์ชั่นในการซ่อน/แสดงทั้งหมด ผลลัพธ์ หมายเหตุ : ในการทำงานนี้จะใช้ jQuery และ Bootstrap ร่วมด้วย ผู้ที่จะนำไปใช้งานอย่าลืมอ้างอิงไฟล์สไตล์ชีทและสคริปท์ของ Bootstrap รวมทั้งไฟล์ของ jQuery เพื่อให้โค้ดข้างต้นสามารถทำงานได้นะคะ           ทั้งหมดนี้ก็เป็นเพียงหนึ่งในตัวอย่างวิธีการที่จะแก้ปัญหาในการแสดงผลข้อมูลแบบตารางด้วย GridView แบบจัดกลุ่มและสามารถย่อ-ยุบข้อมูลภายในกลุ่มได้ โดยนำความสามารถของ Component อย่าง collapse ใน Bootstrap เข้ามาช่วยเท่านั้น แต่ในส่วนของรูปแบบ วิธีการ แต่ละท่านสามารถปรับเปลี่ยนและพลิกแพลงเพิ่มเติมได้ตามความเหมาะสม อีกทั้งยังสามารถนำเกร็ดความรู้นี้ไปประยุกต์ใช้กับงานของท่านได้อีกด้วย และขอบคุณที่ติดตามนะคะ ^^ แหล่งอ้างอิง https://getbootstrap.com/docs/4.0/components/collapse/https://www.geeksforgeeks.org/how-to-change-symbol-with-a-button-in-bootstrap-accordion/

Read More »