ผมเขียนบทความสำหรับ SharePointBriefing.com และพวกเขาวางมันสดวันนี้.
นี่คือแบบ teaser:
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ผมเขียนบทความสำหรับ SharePointBriefing.com และพวกเขาวางมันสดวันนี้.
นี่คือแบบ teaser:
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ผมได้ทำงานในโครงการที่ต้องแยกสิ่งที่แนบจากฟอร์ม InfoPath. มีทรัพยากรที่ดีบางสำหรับแยกฟอร์ม InfoPath (ซึ่งเป็นเพียงแฟ้ม XML, ดังนั้น จึงเป็นจริงค่อนข้างง่าย).
ในขณะที่ผมได้สร้างโครงการ, ผมเริ่ม โดยดาวน์โหลดแบบฟอร์ม InfoPath และบันทึกลงฮาร์ดดิสก์ของฉัน. รหัสของฉัน c# ถูกอ่านโดยตรงจากอินสแตนซ์นั้น. อย่างไรก็ตาม, แบบฟอร์ม InfoPath จริง ๆ อาศัยอยู่ภายในไลบรารีของฟอร์ม SharePoint. ฉันไม่น้อยครึ่งที่ต้อนรับของคนที่ค้นหาวิธีอ่านโดยตรงจากไลบรารี และเกือบได้, ซึ่ง ผมจะได้บันทึกแบบฟอร์มไดเรกทอรีชั่วคราวภายใน และอ่านจาก. อย่างไรก็ตาม, ไม่จำเป็นต้องผ่านห่วงที่เป็นคุณสามารถอ่านได้โดยตรงจากไลบรารี. ส่วนย่อยของโค้ดนี้น้อยแสดงว่า:
/// คลาสนิยามสิ่งที่นี่, รวมทั้งการ:
ส่วนตัว SPFile mySharePointFile; /* ส่วนหนึ่งของ SPList */ // รหัสเพิ่มเติมไปที่นี่ และภายในวิธีการเรียนเรามี: textReader = ใหม่ XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.ไม่มี; textReader.Read(); // ถ้าโหนดที่มีค่า ในขณะที่ (textReader.Read()) { |
จะคีย์บิตเหนือคือ ว่า เราสามารถอ่าน InfoPath โดยตรงผ่านการ OpenBinaryStream() วิธีโทรบน SPFile ที่เป็นพารามิเตอร์ไปที่ตัวสร้างบน XmlTextReader. ทำงานที่ดี.
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
มีการแก้ไขปัญหารายการค่าใช้จ่ายสำหรับลูกค้าที่ใช้ InfoPath และกระแส. จุดหนึ่งในระหว่างกระบวนการอนุมัติ, ต้องสร้างอีเมล์ที่มีข้อมูล InfoPath ที่ดีเป็นสิ่งที่แนบมาด้วยตนเองทั้งหมด ดังนั้น (ถอนหายใจ) คนสามารถนำข้อมูลนั้น และตนเอง re-key ลงในโปรแกรมประยุกต์ฐานข้อมูลของ Oracle.
ไม่ยากที่จะรับ หรือกระจายแบบฟอร์ม InfoPath. ฉันไม่ทราบวิธีการจัดการสิ่งที่แนบ, อย่างไรก็ตาม. หลังจากหนึ่งชั่วโมงหรือสอง poking รอบ Internets (ความเป็นอมตะ!) พบบทความนี้: http://support.microsoft.com/kb/892730
มันมีรหัสบางอย่างมีประโยชน์เพื่อแยกสิ่งที่แนบจากโหนดในแบบฟอร์ม. (คุณยังคงจำเป็นต้องค้นหาโหนดและทั้งหมดที่, แต่นั่นเป็นเพียงแค่แยก XML).
ทราบว่า สิ่งที่แนบมาเป็นการเข้ารหัส base64 และฉันตั้งแต่แรกไปลงเส้นทางของเพียงแค่แยกข้อมูล base64, ถอดรหัสมันและบันทึก. อย่างไรก็ตาม, ฉันได้อย่างรวดเร็วตระหนักฉันไม่ทราบวิธีการขอรับชื่อแฟ้มตัวเองจนพบบทความดังกล่าว.
ฉันมีจริง ๆ พบว่าค่อนข้างเร็ว, แต่ฉันถูกวางปิด โดยบุคลิกภาพของการแยก. บนมือหนึ่ง, บทความ * กล่าวว่า * ดี InfoPath 2007. ยัง, รหัสและคำแนะนำเป็นทั้งหมดเกี่ยวกับ Visual Studio 2003 และการอ้างอิงไปยัง InfoPath 2003.
บรรทัดด้านล่าง, รหัสที่บทความให้ทำงานได้ดีสำหรับฉัน (ดังนั้นไกล). ได้ฟอร์ม InfoPath, สามารถแยกแยะการดังกล่าว, ฉันสามารถค้นหา และถอดรหัสสิ่งที่แนบ และทราบชื่อ. สิ่งที่เพิ่มเติมสามารถหนึ่งถามของชีวิต?
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ถ้าคุณกำลังวิตกว่า สภาพแวดล้อมของ SharePoint อาจเป็น tad unhealthy, ให้ฉันช่วยคุณแก้ไขปัญหาที่ มีการตรวจสอบสุขภาพ.
มีการขั้นตอนการอนุมัติค่าใช้จ่ายที่ต้องนำมาใช้โดยใช้ InfoPath ในการรับรองความถูกต้องของแบบฟอร์มที่ใช้ (FBA) สภาพแวดล้อมในการใช้บริการแบบฟอร์ม (บนเว็บ InfoPath).
ไม่มีการอนุมัติสองกลุ่ม และกระบวนการทำงานดังนี้:
ด้าน InfoPath ของสิ่ง, มีส่วนต่าง ๆ ที่ซ่อน/แสดงขึ้นอยู่กับว่าผู้ใช้เป็นสมาชิกของกลุ่มการอนุมัติ.
ในสภาพแวดล้อม FBA ชื่อผู้ใช้() ฟังก์ชันเสมอกลับว่างเปล่า, เศร้า. สิ่งที่ผมได้ทำการตั้งค่าเป็นรายการที่กำหนดเองที่เรียกว่า "กลุ่มการอนุมัติ".
ฉันไม่ต้องเพิ่มคอลัมน์เพิ่มเติมใด ๆ ในรายการ.
เมื่อแบบฟอร์มเปิดขึ้น, มีกฎดังนี้:
"ตั้งค่าของเขตข้อมูล" อยู่ที่นี่:
ซึ่งโดยทั่วไปบอกว่า: แบบสอบถามแบบกำหนดเองรายการกลุ่มการอนุมัติและกรองแบบสอบถาม โดยหาใด ๆ แถวตำแหน่งค่า = "นอร์ดิค".
ถ้าที่ส่งกลับค่าใด ๆ, จากนั้น ผู้ใช้ปัจจุบันเป็นสมาชิกของกลุ่มนั้น. ฉันรู้ว่า มันประกอบด้วยค่า เพราะความยาวของสายอักขระที่มีค่ามากกว่าศูนย์.
ปิดลูป โดยการรักษาความปลอดภัยแต่ละรายการใน กลุ่มการอนุมัติรายการ. ในขณะใช้งาน, ถ้าผู้ใช้ปัจจุบันไม่มี ความปลอดภัยที่เหมาะสมเข้ากับสินค้าแล้วแบบสอบถามจะไม่กลับ, ความยาวสายอักขระจะเป็นศูนย์ และตอนนี้คุณทราบว่าผู้ใช้ปัจจุบัน ไม่ใช่ส่วนหนึ่งของกลุ่มนั้น. คุณสามารถใช้ที่ข้อเท็จจริงตามที่ต้องการในแบบฟอร์ม.
นี้เป็นข้อสั้น ๆ ซูเปอร์. ผมกำลังกดเวลา หรือฉันจะให้รายละเอียดเพิ่มเติม.
ไม่ทราบว่าเกี่ยวข้องเป็นที่ฉันอยู่ในสภาพแวดล้อม(fba). นี้คงจะทำงานในสภาพแวดล้อมไม่ใช่ FBA แต่ฉันสามารถคิดกรณีที่นี้จะเป็นประโยชน์.
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ฉันทำงานบนแบบฟอร์ม InfPath วันนี้ และวิ่งขึ้นกับเพื่อนเก่า, "ไม่ได้จัดการข้อยกเว้นเมื่อแสดงผลแบบ System.Xml.XmlException: คาดจุดสิ้นสุดของแฟ้มในขณะแยกวิเคราะห์ชื่อเกิดขึ้น"
นี้เกิดขึ้นกับผมนานมาแล้ว และไม่ทราบว่าผมได้แก้ไข. สุจริตอย่าง, คิดว่า ฉันมีการเปลี่ยนโครงการใหม่ และไม่เคยเห็นคนนี้ได้รับการแก้ไข (แทนของฉันมีการจัดการกับอาการปวดหัวที่). อย่าลืมมันเป็นมารของปัญหา. ผมใช้เวลาหลายวันสำเร็จจัดการกับมัน. หลังจากนั้น, ผมเคยเห็นนี้ขึ้นมาบนฟอรั่ม MSDN ครั้งน้อยกว่าปี และไม่เคยเห็นคำตอบเรื่อง.
ผมตีมันวันนี้ และโชคดีขณะนี้ , ฉันมีเพียงแค่ทำการเปลี่ยนแปลงแบบ. ฉันแอ่นออกเปลี่ยน และปัญหาไปเก็บ. มันเปิดออกว่า จะสามารถสร้างคำจากแม่โดยใช้ตัวออกแบบ InfoPath ในลักษณะที่สร้างข้อผิดพลาดในการแยกวิเคราะห์ด้านเซิร์ฟเวอร์แบบฟอร์มของรั้ว.
ในกรณีของฉัน, ปัญหาที่เกิดจากขั้นตอนเหล่านี้:
ไม่ทราบถ้าขั้นตอนเหล่านี้เป็นสาเหตุของปัญหา หรืออาจจะ, อย่างใด ในรายการเองเป็นปัญหา. ฉันจะทดลองเล็ก และดูถ้าฉันสามารถเล็บ downt เขาพารามิเตอร์นี้ มีรายละเอียดใด ๆ เพิ่มเติม.
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ฉันยังคงอาศัยอยู่ในโลกของแบบฟอร์ม InfoPath และฉันจำเป็นต้องเปลี่ยนแปลง "เล็ก" อย่างใดอย่างหนึ่งให้รูปแบบที่, แต่น่าเสียดาย, แบ่งชื่อที่ฉันนำมาใช้กับสองสัปดาห์ที่ผ่านมา. คิดกับตัวเอง, "คนจะมองสิ่งนี้ปีนี้และพูด, ' อะไรพอลคิด? โดย Jove, ชื่อของเขาทำให้รู้สึกไม่!”
ฉันรู้ว่า ฉันสามารถสร้างมุมมองในแบบฟอร์มนี้แล้ว, อีกครั้งนะ, รู้ว่า ฉันสามารถมีการทำอะไรเช่นนี้ทั้งหมดตาม. เพิ่มมุมมองของ "บันทึกนักพัฒนา" ในฟอร์ม InfoPath เช่น:
ผมได้กำหนดค่าแบบฟอร์มเพื่อให้ผู้ใช้ไม่สามารถเปิดมุมมองและ, มันจะปรากฏเฉพาะกับไคลเอ็นต์ InfoPath ในมุมมองออกแบบ. ตอนนี้ รู้สึกว่า inoculated เหมือนกับนักพัฒนาไม่รู้จักบางในอนาคตมองฟอร์มของฉันและความคิดไม่ดีคิดเกี่ยวกับฉัน. ทัศนียภาพ!
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ฉันดูเหมือนจะผ่านระยะ InfoPath ที่, จู่ ๆ, ฉันกำลังงานหัตถกรรมพวงของฟอร์ม. นิ้วของฉันเรียนรู้วิธีการใช้เครื่องมือดี และฉันผ่านแล้งเดือนเก้า แล้วต้องเรียนรู้เรื่องทั้งหมดกว่าอีก.
ฉันกลางระยะการ InfoPath และฉันสร้างฟอร์ม InfoPath ที่ มีหลากหลายมุมมอง. สิ่งหนึ่งที่คุณอาจสังเกตเห็นว่า ใน InfoPath 2007 ไคลเอ็นต์แสดงมุมมองตามลำดับตัวอักษร. นี้เป็นการรบกวนที่จริงบางครั้ง. เทคนิคที่ดีที่สุดของฉันวันนี้คือการ ขึ้นต้นเลขชื่อดูเพื่อให้พวกเขาแสดงในลำดับฉันต้องการเสมอ, เป็นภาพประกอบที่นี่:
ฉันต้องการฉันมีการทำเช่นนี้ตลอด.
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
ผมเคยทำงานในสัปดาห์นี้ในมอสส์ใน FBA บางฟอร์ม InfoPath และเรียนรู้, เมื่อผมไปปรับใช้ ฟอร์มการกับ FBA เป็นโซนที่ชื่อผู้ใช้() ฟังก์ชันฟังก์ชันไม่ทำงาน. ฉันใช้มันเพื่อสร้างชื่อแฟ้มเฉพาะ.
ดี, ที่ทำงานไม่ทำงานในสภาพแวดล้อม FBA (น้อย, ไม่ออกของกล่อง). และ, เมื่อสะท้อน, โดยใช้ชื่อผู้ใช้ในวิธีก็ไม่ได้รับประกันชื่อแฟ้มเฉพาะกรณีใด.
โซลูชันของฉันถูกใช้กับปัจจุบัน() ฟังก์ชันและกฎที่แรกในการโหลดของฟอร์ม. ผมกำหนดชื่อแฟ้มองค์ประกอบข้อมูลจะว่างเปล่า:
ข้อดีของวิธีนี้คือ ว่า ชื่อแฟ้มถูกตั้งค่าเพียงครั้งเดียว. (ฉันไม่แสดงในหน้าจอการถ่าย, แต่ใส่เงื่อนไขในกฎเฉพาะ ไฟเมื่อ "myFilename" เป็นค่าว่าง). เคยตั้งชื่อแฟ้มที่ระดับแหล่งข้อมูล. โดยทั่วไป, จะทำอะไร (ไม่ถูกต้อง) แบบนี้:
ปัญหาที่ว่าถ้าที่ผู้ใช้เปิดฟอร์มที่จันทร์ และผู้ใช้ B เปลี่ยนแปลงในวันอังคาร, คุณจะได้สองรูปแบบที่แตกต่างกันตั้งแต่สองผู้ใช้บันทึก ด้วยชื่อผู้ใช้ที่แตกต่างกัน.
ดังนั้น, เป็นที่น่ารำคาญเป็น FBA สามารถใน InfoPath และโดยเฉพาะอย่างยิ่ง, มันทำให้ฉันคิดเล็ก แต่สำคัญจริง ๆ รายละเอียดทางเทคนิคและวิธีการที่ผมจะไม่ทำอย่างอื่น!
</สิ้นสุด>
ทำตามฉันใน Twitter ที่ http://www.twitter.com/pagalvin
มีสถานการณ์สมมติทางธุรกิจทั่วไปเช่นนี้:
ตัวอย่างนี้ office.microsoft.com อธิบายวิธีการสร้างแยกต่างหาก "มุมมอง" และทำเครื่องหมายมุมมองทั้งหมดเป็นแบบอ่านอย่างเดียว. นี้เป็นวิธีที่สามารถทำงานได้ แต่มีข้อเสียเปรียบที่คุณได้สร้างรุ่นทั้งสองแบบฟอร์มเดียวกันได้อย่างมีประสิทธิภาพ และต้องตอนนี้เก็บไว้ให้ตรงกันด้วยตนเอง. ถ้าคุณเพิ่มเขตข้อมูลไปยังมุมมองที่สามารถแก้ไขได้, คุณแล้วต้องเพิ่มมุมมองแก้ไขไม่ได้เช่น. เวลาผ่านไป, มีการพัฒนาแตกต่างกัน, อาจมีบาง divergence.
ทางเลือกนี้อาจทำงานได้ดีในบางกรณี:
ข้อเสียเปรียบกับวิธีการนี้คือ ว่า ฟิลด์ทั้งหมดจะยังคงสามารถแก้ไขบนหน้าจอ. ผู้ใช้จะได้รับความประทับใจไม่ว่า พวกเขาสามารถเปลี่ยนแปลงเนื้อหาจริง. คุณสามารถลดที่ โดยใส่ในข้อความที่แบบฟอร์มถูกปิดใช้งาน, อาจจะในตัวอักษรสีแดงขนาดใหญ่ข้ามด้านบนของหน้า.
ในโครงการหนึ่ง, สร้าง "สถานะลำดับงาน" ดู. ตามลำดับหน้าไปเพียงใด, มันจะอัพเดตฟิลด์สถานะเฉพาะที่ได้รับการส่งเสริมจากแบบฟอร์ม. เมื่อผู้ใช้เปิดฟอร์ม, "เปิดแบบ" กฎโดยอัตโนมัติสลับไปที่มุมมองและผู้มีสถานะสรุปน้อยดี.
</สิ้นสุด>
เราได้มีการพัฒนาแล้วฟอร์ม InfoPath มีหลายมุมมองเพื่อสนับสนุนการจ้างงานใหม่ / ในประจำการ. เมื่อบริษัท hires คนใหม่, ที่แผนก IT และกลุ่มอื่น ๆ ที่จำเป็นต้องดำเนินการ (ตั้งค่าค่าจ้าง, เปิดใช้งานการเข้าถึงแอปพลิเคชันที่เหมาะสม, หาตำแหน่งที่ตั้งโต๊ะทำงาน, ฯลฯ). เราใช้แบบฟอร์มในมุมมองต่าง ๆ ของฟอร์มสำหรับแต่ละฟังก์ชัน.
ที่บริษัทนี้, ส่วนใหญ่ของบุคคลที่เกี่ยวข้องในกระบวนการทางธุรกิจมีไอซิ่ง, ดังนั้นเมื่อพวกเขาเข้าถึงแบบฟอร์ม, มุมมองเริ่มต้นของพวกเขาคือ เมนู"" ดูปุ่มที่ตรงนั้นเพื่อการทำงานเฉพาะ. อย่างไรก็ตาม, เราต้องทำกิจกรรมสำหรับผู้จัดการโดยตรงของเช่าใหม่. บุคคลนี้ควรดูการใด ๆ ที่เกี่ยวข้องกับสิ่งที่ไม่. อันที่จริง, เธอควรดูเพียงหนึ่งมุมมองของฟอร์ม และแม้ไม่มีตัวเลือกเมื่อต้องการดูมุมมองอื่น ๆ.
ในกรณีของเรา, ที่โดยตรงของผู้จัดการบัญชีผู้ใช้ถูกยึดโดยตรงไปยังแบบฟอร์มความอนุเคราะห์จากการ ตัวเลือกที่ติดต่อ (ซึ่งฉันกำลังเสมออยากเรียกใช้เป็น "บุคคลที่เลือก" เหตุผลบางประการ).
ขั้นตอนมีดังนี้:
1. ในโหมดออกแบบ, ไปที่เครื่องมือ-> แบบฟอร์มตัวเลือก-> เปิด และบันทึก.
2. เลือก "กฎ".
3. สร้างกฎใหม่ที่มีการกระทำคือ "สลับไปดู" และเงื่อนไขที่มี leverages ชื่อผู้ใช้() ฟังก์ชัน.
ชื่อผู้ใช้() ส่งกลับค่าง่ายๆ"" ชื่อผู้ใช้ โดยไม่มีโดเมน. ถ้าฉันเข้าสู่ระบบ SharePoint ด้วยข้อมูลประจำตัว "domainpagalvin", ชื่อผู้ใช้() ส่งกลับค่า "pagalvin".
ตัวเลือกที่ติดต่อให้สามบิตข้อมูลสำหรับที่ติดต่อ. "AccountID" ส่วนที่เป็นประโยชน์สำหรับสถานการณ์สมมตินี้. สิ่งเดียวที่ทำให้นี้แม้หน่อย ๆ ของความท้าทายคือตัวเลือกผู้ติดต่อ (ในสภาพแวดล้อมของฉันอยู่ดี) ส่งกลับค่าในโดเมนและรหัสผู้ใช้, ใน "domainpagalvin". นี้ป้องกันไม่ให้เราทำเงื่อนไขความเสมอภาคตรงไปตั้งแต่ AccountID ("domainpagalvin") ไม่เคยจะเท่ากับชื่อผู้ใช้() ("pagalvin").
เราจะได้รับรอบนี้โดยใช้การ "ประกอบด้วย" ตัวดำเนินการ: AccountID ประกอบด้วยชื่อผู้ใช้().
เราสามารถนำมันเพิ่มเติมและ pre-pend โดเมนล่วงหน้าชื่อผู้ใช้() ฟังก์ชันของเราตรวจสอบความเสมอภาค และขจัดความเสี่ยงในการเป็นค่าบวกเท็จในการดำเนินการประกอบด้วย.
เราจะมีจริง ๆ เช่นการสลับมุมมองสำหรับผู้ใช้อื่น ๆ ตามการโฆษณาความปลอดภัยกลุ่มสมาชิกโดยอัตโนมัติ. ตัวอย่าง, เมื่อเป็นสมาชิกของการ "ได้วิเคราะห์" แบบฟอร์มการเข้าถึงกลุ่ม, สลับไปยังมุมมองการวิเคราะห์ได้โดยอัตโนมัติ. เราไม่มีเวลาที่จะนำไปใช้, แต่ความคิดแรกของฉันคือการ สร้างบริการเว็บที่จะมีวิธีการเช่นเดียวกับ "IsMemberOfActiveDirectorySecurityGroup", ส่งชื่อผู้ใช้() และส่งคืนกลับมาจริง หรือเท็จ. ไม่มีใครมีกัน, เพิ่มเติมความคิดที่ฉลาด? มีฟังก์ชัน SharePoint ใด ๆ เราสามารถใช้ประโยชน์จาก InfoPath ให้กำหนดว่า?
</สิ้นสุด>