navigateTo (การอ้างอิง API ไคลเอ็นต์)

นําทางไปยังรายการตาราง ระเบียนตาราง ทรัพยากร HTML เว็บ หรือหน้าแบบกําหนดเองที่ระบุ

หมายเหตุ

วิธีนี้ได้รับการสนับสนุนเฉพาะบนอินเทอร์เฟซแบบรวมศูนย์เท่านั้น

ไวยากรณ์

ใช้ไวยากรณ์ต่อไปนี้เพื่อเรียกXrm.Navigation.navigateTo()

Xrm.Navigation.navigateTo(pageInput,navigationOptions).then(successCallback,errorCallback);

พารามิเตอร์

เมธอด ยอมรับพารามิเตอร์ต่อไปนี้

ชื่อ ชนิด จำเป็นต้องระบุ คำอธิบาย
pageInput ออบเจ็กต์ ใช่ ป้อนข้อมูลเกี่ยวกับหน้าเพื่อนําทางไป ดู พารามิเตอร์ pageInput
navigationOptions ออบเจ็กต์ ไม่ ตัวเลือกสําหรับการนําทางไปยังหน้า: ว่าจะเปิดแบบอินไลน์หรือในกล่องโต้ตอบ ถ้าคุณไม่ได้ระบุพารามิเตอร์นี้ เมธอด จะเปิดหน้าแบบอินไลน์ตามค่าเริ่มต้น
successCallback ฟังก์ชัน ไม่ ฟังก์ชันที่จะดําเนินการหลังจากการนําทางแบบอินไลน์สําเร็จหรือเมื่อปิดกล่องโต้ตอบ สําหรับชนิดหน้าที่สนับสนุนการส่งกลับค่า ฟังก์ชันจะได้รับค่านั้นเป็นอาร์กิวเมนต์
errorCallback ฟังก์ชัน ไม่ ฟังก์ชันที่จะดําเนินการเมื่อการดําเนินการล้มเหลว

pageInput พารามิเตอร์

การเปลี่ยนแปลงข้อกําหนดของวัตถุโดยขึ้นอยู่กับชนิดของหน้าเพื่อนําทางไปยัง: รายการเอนทิตีระเบียนเอนทิตีแดชบอร์ดทรัพยากรบนเว็บ HTMLหน้าแบบกําหนดเอง หรือหน้าสร้าง

รายการเอนทิตี

วัตถุรายการเอนทิตีประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุentitylist
entityName สตริง ชื่อตรรกะของตารางที่จะโหลดในตัวควบคุมรายการ
viewId สตริง (ไม่บังคับ) ID ของมุมมองที่จะโหลด ถ้าคุณไม่ได้ระบุ แอปจะนําทางไปยังมุมมองหลักเริ่มต้นสําหรับตาราง
viewType สตริง (ไม่บังคับ) ชนิดของมุมมองที่จะโหลด ระบุว่า savedquery หรือ userquery

ระเบียนเอนทิตี

วัตถุระเบียนเอนทิตีประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุentityrecord
entityName สตริง ชื่อตรรกะของตารางที่จะแสดงฟอร์ม
entityId สตริง (ไม่บังคับ) รหัสของเรกคอร์ดตารางที่จะแสดงแบบฟอร์ม ถ้าคุณไม่ได้ระบุค่านี้ ฟอร์มจะเปิดขึ้นในโหมดสร้าง
createFromEntity การค้นหาข้อมูล (ไม่บังคับ) กําหนดระเบียนที่ให้ค่าเริ่มต้นโดยยึดตามค่าคอลัมน์ที่ถูกแมป ออบเจ็กต์การค้นหามีคุณสมบัติสตริงต่อไปนี้: entityType, id และชื่อ (ตัวเลือก)
data ออบเจ็กต์ (ไม่บังคับ) วัตถุพจนานุกรมที่ส่งผ่านพารามิเตอร์เพิ่มเติมไปยังฟอร์ม

พารามิเตอร์สามารถเป็นคอลัมน์ตารางที่มีค่าเริ่มต้นที่ตั้งไว้ในฟอร์มใหม่ (ดู ตั้งค่าคอลัมน์โดยใช้พารามิเตอร์ที่ส่งผ่านไปยังฟอร์ม) หรือพารามิเตอร์แบบกําหนดเองที่เข้าถึงบนฟอร์มที่ใช้ formContext.data.attributes (ดู กําหนดค่าฟอร์มเพื่อยอมรับพารามิเตอร์สตริงคิวรีแบบกําหนดเอง และ formContext.data) พารามิเตอร์ไม่ถูกต้องทําให้เกิดข้อผิดพลาด

formId สตริง (ไม่บังคับ) รหัสของอินสแตนซ์ของฟอร์มที่จะแสดง
isCrossEntityNavigate แบบบูลีน (ไม่บังคับ) ระบุว่าฟอร์มถูกนําทางจากตารางอื่นโดยใช้โฟลว์กระบวนการทางธุรกิจแบบตารางข้ามหรือไม่
isOfflineSyncError แบบบูลีน (ไม่บังคับ) ระบุว่ามีข้อผิดพลาดใด ๆ ในการซิงค์แบบออฟไลน์หรือไม่
processId สตริง (ไม่บังคับ) รหัสของกระบวนการทางธุรกิจที่จะแสดงบนแบบฟอร์ม
processInstanceId สตริง (ไม่บังคับ) รหัสของอินสแตนซ์กระบวนการทางธุรกิจที่จะแสดงบนแบบฟอร์ม
relationship ออบเจ็กต์ (ไม่บังคับ) กําหนดวัตถุความสัมพันธ์เพื่อแสดงระเบียนที่เกี่ยวข้องบนฟอร์ม ดูความสัมพันธ์
selectedStageId สตริง (ไม่บังคับ) รหัสของลําดับขั้นที่เลือกในอินสแตนซ์กระบวนการทางธุรกิจ
tabName สตริง (ไม่บังคับ) ตั้งค่าโฟกัสบนแท็บของฟอร์ม

เรียนรู้วิธีการเปิดฟอร์มหลักในกล่องโต้ตอบโดยใช้ API ของไคลเอ็นต์

ออบเจ็กต์ความสัมพันธ์

วัตถุความสัมพันธ์ที่ใช้ใน ระเบียนเอนทิตีประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
attributeName สตริง ชื่อของคอลัมน์ที่ใช้สําหรับความสัมพันธ์
name สตริง ชื่อของความสัมพันธ์
navigationPropertyName สตริง ชื่อของคุณสมบัติการนําทางสําหรับความสัมพันธ์นี้
relationshipType ตัวเลข ประเภทความสัมพันธ์ ระบุหนึ่งในค่าต่อไปนี้: 0:OneToMany, 1:ManyToMany
roleType ตัวเลข ชนิดบทบาทในความสัมพันธ์ ระบุหนึ่งในค่าต่อไปนี้: 1:Referencing, 2:AssociationEntity

แดชบอร์ด

ใช้วัตถุpageInputนี้เป็นพารามิเตอร์เมื่อคุณต้องการเปิดแดชบอร์ด

ออบเจ็กต์แดชบอร์ดประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุdashboard
dashboardId สตริง ID ของแดชบอร์ดที่จะโหลด ถ้าคุณไม่ได้ระบุ ID แอปจะนําทางไปยังแดชบอร์ดเริ่มต้น

ทรัพยากรบนเว็บ HTML

ใช้วัตถุpageInputนี้เป็นพารามิเตอร์เมื่อคุณต้องการเปิดทรัพยากรบนเว็บ HTML

วัตถุทรัพยากรเว็บ HTML ประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุwebresource
webresourceName สตริง ชื่อของทรัพยากรบนเว็บที่จะโหลด
data สตริง (ไม่บังคับ) ข้อมูลที่จะส่งผ่านไปยังทรัพยากรเว็บ

หน้าแบบกําหนดเอง

ใช้วัตถุpageInputนี้เป็นพารามิเตอร์เมื่อคุณต้องการเปิดหน้าแบบกําหนดเอง

ออบเจ็กต์หน้าแบบกําหนดเองประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุcustom
name สตริง ชื่อตรรกะของหน้าแบบกําหนดเองที่จะเปิด
entityName สตริง (ไม่บังคับ) ชื่อตรรกะของตารางที่จะทําพร้อมใช้งานในหน้าแบบกําหนดเองผ่านParam("entityName")
recordId สตริง (ไม่บังคับ) ID ของเรกคอร์ดตารางที่จะพร้อมใช้งานในหน้าแบบกําหนดเองผ่านParam("recordId")

หน้าที่สร้าง

ใช้ออบเจ็กต์pageInputนี้เป็นพารามิเตอร์เมื่อคุณต้องการเปิดหน้าที่สร้าง

เมื่อต้องการใช้ recordIdentityName, หรือ dataต้องตั้งค่าหน้าการสร้างเป้าหมายเพื่อยอมรับพารามิเตอร์การป้อนข้อมูล

ออบเจ็กต์หน้าที่สร้างประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
pageType สตริง ระบุgenerative
pageId สตริง ID ของหน้าที่สร้างเพื่อเปิด
recordId สตริง (ไม่บังคับ) GUID ของระเบียนที่จะส่งผ่านไปยังหน้า
entityName สตริง (ไม่บังคับ) ชื่อตรรกะของตาราง Dataverse ที่ recordIdสอดคล้องกับ
data ออบเจ็กต์ (ไม่บังคับ) ออบเจ็กต์ JSON ที่มีพารามิเตอร์แบบกําหนดเองเพิ่มเติมเพื่อส่งผ่านไปยังหน้า

ดูตัวอย่างที่แสดงวิธีการนําทางไปยังและจากหน้าที่สร้างโดยใช้ API ของไคลเอ็นต์

วัตถุ navigationOptions ประกอบด้วยค่าต่อไปนี้

ชื่อ ชนิด คำอธิบาย
target ตัวเลข ระบุ 1 เพื่อเปิดหน้าแบบอินไลน์ ระบุ 2 เพื่อเปิดหน้าในกล่องโต้ตอบ
นอกจากนี้ ส่วนที่เหลือของค่า (ความกว้าง ความสูง และตําแหน่ง) จะมีผลเฉพาะเมื่อคุณระบุ 2 ในค่านี้ (เปิดหน้าในกล่องโต้ตอบ)
หมายเหตุ: คุณสามารถเปิดรายการเอนทิตีแบบอินไลน์เท่านั้น คุณสามารถเปิดระเบียนของเอนทิตี ทรัพยากรบนเว็บ และหน้าสร้างทั้งแบบอินไลน์หรือในกล่องโต้ตอบ
width ตัวเลขหรือวัตถุ (ไม่บังคับ) ความกว้างของกล่องโต้ตอบ เมื่อต้องการระบุความกว้างเป็นพิกเซล ให้พิมพ์ค่าตัวเลข เมื่อต้องการระบุความกว้างเป็นเปอร์เซ็นต์ ให้ระบุวัตถุชนิด SizeValue ด้วยคุณสมบัติต่อไปนี้:
- value: ค่าตัวเลขของชนิดตัวเลข
- unit: หน่วยของการวัดชนิดสตริง ระบุว่า % หรือ px ค่าเริ่มต้นคือ px
height ตัวเลขหรือวัตถุ (ไม่บังคับ) ความสูงของกล่องโต้ตอบ เมื่อต้องการระบุความสูงเป็นพิกเซล ให้พิมพ์ค่าตัวเลข เมื่อต้องการระบุความกว้างเป็นเปอร์เซ็นต์ ให้ระบุวัตถุชนิด SizeValue ด้วยคุณสมบัติต่อไปนี้:
- ค่า: ค่าตัวเลขของชนิดตัวเลข
- unit: หน่วยของการวัดชนิดสตริง ระบุว่า % หรือ px ค่าเริ่มต้นคือ px
position ตัวเลข (ไม่บังคับ) ระบุ 1 เพื่อเปิดกล่องโต้ตอบในศูนย์ 2 เพื่อเปิดกล่องโต้ตอบทางด้านไกล ค่าเริ่มต้นคือ 1 (กึ่งกลาง)
title สตริง (ไม่บังคับ) ชื่อกล่องโต้ตอบที่ด้านบนของกล่องโต้ตอบตรงกลางหรือด้านข้าง

ค่าที่ส่งกลับ

ส่งกลับสัญญา ค่าที่ส่งผ่านเมื่อสัญญาคลี่คลายขึ้นอยู่กับประเภทเป้าหมายและหน้า:

  • แบบอินไลน์: สัญญาจะแก้ไขเมื่อการนําทางเสร็จสมบูรณ์และไม่ส่งกลับค่า
  • กล่องโต้ตอบ: สัญญาจะได้รับการแก้ไขเมื่อกล่องโต้ตอบปิด
    • สําหรับเรกคอร์ดเอนทิตีที่เปิดในโหมดสร้าง สัญญาจะแก้ไขด้วยออบเจ็กต์ที่มี savedEntityReference อาร์เรย์
    • สําหรับหน้าสร้าง สัญญาจะแก้ไขด้วยออบเจ็กต์ที่มีreturnValueคุณสมบัติที่มีค่าที่ส่งผ่านล่าสุดไปยังdataApi.setPageOutput(value) ถ้าหน้าที่สร้างไม่ได้ตั้งค่าเอาต์พุต ให้ปิดกล่องโต้ตอบโดยการเลือก ยกเลิก หรือปุ่มปิด จะส่งผลให้เกิด ที่ไม่ได้กําหนด returnValueไว้
    • หน้าชนิดอื่น ๆ จะไม่ส่งกลับค่าเมื่อปิดกล่องโต้ตอบ

อาร์เรย์ savedEntityReference ที่ส่งกลับสําหรับเรกคอร์ดเอนทิตีประกอบด้วยคุณสมบัติเหล่านี้:

  • entityType: ชื่อตรรกะของตาราง
  • id: การแสดงสตริงของ GUID ของระเบียน
  • ชื่อ: ค่าคอลัมน์หลักของระเบียน

ตัวอย่างเช่น

ตัวอย่างต่อไปนี้สาธิตการนําทางไปยังหน้าชนิดต่าง ๆ แบบอินไลน์และในกล่องโต้ตอบ

ตัวอย่าง แสดงตัวอย่าง
เปิดรายการบัญชี วิธีการเปิดรายการบัญชีหลักแบบอินไลน์
เปิดระเบียนบัญชีที่มีอยู่ภายในกล่องโต้ตอบ วิธีการเปิดเรกคอร์ดบัญชีที่มีอยู่ในกล่องโต้ตอบที่จัดกึ่งกลางด้วยความสูงและความกว้างที่ระบุ
เปิดฟอร์มบัญชีในโหมดสร้างภายในกล่องโต้ตอบ วิธีการเปิดฟอร์มบัญชีในโหมดสร้างในกล่องโต้ตอบและเข้าถึง ID และชื่อของระเบียนที่บันทึกไว้
เปิดทรัพยากรเว็บ HTML ในกล่องโต้ตอบ วิธีการเปิดทรัพยากรบนเว็บ HTML ในกล่องโต้ตอบที่มีมิติที่ระบุในหน่วยพิกเซล
เปิดหน้าที่สร้างด้วยพารามิเตอร์ข้อมูลป้อนเข้าในกล่องโต้ตอบ วิธีการส่งผ่านบริบทระเบียนและพารามิเตอร์แบบกําหนดเองไปยังกล่องโต้ตอบหน้าที่สร้างและอ่านค่าที่ส่งกลับ

ตัวอย่างรายการบัญชีที่เปิด

เปิดรายการบัญชีหลักแบบอินไลน์

var pageInput = {
    pageType: "entitylist",
    entityName: "account"
};
Xrm.Navigation.navigateTo(pageInput).then(
    function success() {
            // Run code on success
    },
    function error() {
            // Handle errors
    }
);

เปิดเรกคอร์ดบัญชีที่มีอยู่ภายในตัวอย่างกล่องโต้ตอบ

เปิดฟอร์มบัญชีที่มีอยู่ภายในกล่องโต้ตอบ

var pageInput = {
    pageType: "entityrecord",
    entityName: "account",
    entityId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee" //replace with actual ID
};
var navigationOptions = {
    target: 2,
    height: {value: 80, unit:"%"},
    width: {value: 70, unit:"%"},
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success() {
            // Run code on success
    },
    function error() {
            // Handle errors
    }
);

เรียนรู้วิธีการเปิดฟอร์มหลักในกล่องโต้ตอบโดยใช้ API ของไคลเอ็นต์

เปิดฟอร์มบัญชีในโหมดสร้างภายในตัวอย่างกล่องโต้ตอบ

เปิดฟอร์มบัญชีในโหมดสร้างภายในกล่องโต้ตอบและส่งกลับการอ้างอิงระเบียนที่สร้างขึ้นเมื่อบันทึก

var pageInput = {
    pageType: "entityrecord",
    entityName: "account"    
};
var navigationOptions = {
    target: 2,
    height: {value: 80, unit:"%"},
    width: {value: 70, unit:"%"},
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success(result) {
            console.log("Record created with ID: " + result.savedEntityReference[0].id + 
            " Name: " + result.savedEntityReference[0].name)
            // Handle dialog closed
    },
    function error() {
            // Handle errors
    }
);

เรียนรู้วิธีการเปิดฟอร์มหลักในกล่องโต้ตอบโดยใช้ API ของไคลเอ็นต์

เปิดทรัพยากรเว็บ HTML ในตัวอย่างกล่องโต้ตอบ

เปิดทรัพยากรบนเว็บ HTML ในกล่องโต้ตอบ

var pageInput = {
    pageType: "webresource",
    webresourceName: "new_sample_webresource.htm"
};
var navigationOptions = {
    target: 2,
    width: 500, // value specified in pixel
    height: 400, // value specified in pixel
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success() {
            // Run code on success
    },
    function error() {
            // Handle errors
    }
);

เปิดหน้าสร้างที่มีพารามิเตอร์การป้อนข้อมูลในตัวอย่างกล่องโต้ตอบ

เปิดหน้าสร้างเป็นกล่องโต้ตอบที่จัดกึ่งกลาง ส่งผ่านรหัสเรกคอร์ด ชื่อเอนทิตี และพารามิเตอร์ข้อมูลแบบกําหนดเอง หน้าสร้างต้องได้รับการตั้งค่าเพื่อยอมรับพารามิเตอร์เหล่านี้

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>", // replace with the ID of your generative page
    recordId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", // replace with actual record GUID
    entityName: "account",
    data: { status: "active", category: "premium" }
};
var navigationOptions = {
    target: 2,
    height: {value: 80, unit: "%"},
    width: {value: 70, unit: "%"},
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success(result) {
        const output = result?.returnValue;
        if (output) {
            console.log("Value returned by generative page:", output);
        }
    },
    function error(error) {
        console.log(error.message);
    }
);

Xrm.Navigation
นําทางไปยังและจากหน้าที่สร้าง
การนําทางไปยังและจากหน้าแบบกําหนดเอง (ตัวอย่าง)