创建仪表板

可以使用 Dynamics 365 Customer Engagement Web 服务创建组织负责的仪表板,也可以通过编辑 customizations.xml 文件在 Dynamics 365 for Customer Engagement 中自定义实体窗体来创建。

注释

Web 应用程序中的仪表板设计器不支持使用 SDK 或通过自定义实体表单创建的某些仪表板。 有关更多信息,请参阅本主题后面的限制 :使用 SDK 或通过表单自定义创建控制面板

在创建控制面板之前,请考虑以下事项:

  • 控制面板类型:如果您希望控制面板在整个组织中可用,并且不想在更详细的级别管理访问级别,则可能需要创建组织拥有的控制面板。 但是,如果您担心控制面板的访问权限和安全性,请考虑创建一个用户拥有的控制面板,以便您可以更好地控制谁可以访问它。

    要创建组织负责的控制面板,您必须具有 System Administrator (系统管理员) 或 System Customizer (系统定制员) 角色。

  • 仪表板布局:在创建仪表板时,您必须使用 FormXML 来定义仪表板组件和布局。 有关使用 FormXML 定义仪表板的信息,请参阅 仪表板组件和 FormXML 元素。 有关一些不同类型仪表板的 FormXML 示例,请参阅 示例仪表板

使用 SDK 创建控制面板

要创建控制面板,请为组织拥有的控制面板创建一个SystemForm实例,或为用户拥有的控制面板创建一个UserForm实例。 以下示例显示如何创建组织负责的控制面板。



//This is the language code for U.S. English. If you are running this code
//in a different locale, you will need to modify this value.
int languageCode = 1033;

//We set up our dashboard and specify the FormXml. Refer to the
//FormXml schema in the Microsoft Dynamics CRM SDK for more information.
SystemForm dashboard = new SystemForm
{
    Name = "Sample Dashboard",
    Description = "Sample organization-owned dashboard.",
    FormXml = String.Format(@"<form>
            <tabs>
                <tab name='Test Dashboard' verticallayout='true'>
                    <labels>
                        <label description='Sample Dashboard' languagecode='{0}' />
                    </labels>
                    <columns>
                        <column width='100%'>
                            <sections>
                                <section name='Information Section'
                                    showlabel='false' showbar='false'
                                    columns='111'>
                                    <labels>
                                        <label description='Information Section'
                                            languagecode='{0}' />
                                    </labels>
                                    <rows>
                                        <row>
                                            <cell colspan='1' rowspan='10' 
                                                showlabel='false'>
                                                <labels>
                                                    <label description='Top Opportunitiess - 1'
                                                    languagecode='{0}' />
                                                </labels>
                                                <control id='TopOpportunities'
                                                    classid='{{E7A81278-8635-4d9e-8D4D-59480B391C5B}}'>
                                                    <parameters>
                                                        <ViewId>{1}</ViewId>
                                                        <IsUserView>false</IsUserView>
                                                        <RelationshipName />
                                                        <TargetEntityType>opportunity</TargetEntityType>
                                                        <AutoExpand>Fixed</AutoExpand>
                                                        <EnableQuickFind>false</EnableQuickFind>
                                                        <EnableViewPicker>false</EnableViewPicker>
                                                        <EnableJumpBar>false</EnableJumpBar>
                                                        <ChartGridMode>Chart</ChartGridMode>
                                                        <VisualizationId>{2}</VisualizationId>
                                                        <EnableChartPicker>false</EnableChartPicker>
                                                        <RecordsPerPage>10</RecordsPerPage>
                                                    </parameters>
                                                </control>
                                            </cell>
                                            <cell colspan='1' rowspan='10' 
                                                showlabel='false'>
                                                <labels>
                                                    <label description='Top Opportunities - 2'
                                                    languagecode='{0}' />
                                                </labels>
                                                <control id='TopOpportunities2'
                                                    classid='{{E7A81278-8635-4d9e-8D4D-59480B391C5B}}'>
                                                    <parameters>
                                                        <ViewId>{1}</ViewId>
                                                        <IsUserView>false</IsUserView>
                                                        <RelationshipName />
                                                        <TargetEntityType>opportunity</TargetEntityType>
                                                        <AutoExpand>Fixed</AutoExpand>
                                                        <EnableQuickFind>false</EnableQuickFind>
                                                        <EnableViewPicker>false</EnableViewPicker>
                                                        <EnableJumpBar>false</EnableJumpBar>
                                                        <ChartGridMode>Grid</ChartGridMode>
                                                        <VisualizationId>{2}</VisualizationId>
                                                        <EnableChartPicker>false</EnableChartPicker>
                                                        <RecordsPerPage>10</RecordsPerPage>
                                                    </parameters>
                                                </control>
                                            </cell>
                                        </row>
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                        <row />
                                    </rows>
                                </section>
                            </sections>
                        </column>
                    </columns>
                </tab>
            </tabs>
        </form>",
    languageCode,
    defaultOpportunityQuery.SavedQueryId.Value.ToString("B"),
    visualization.SavedQueryVisualizationId.Value.ToString("B")),
    IsDefault = false
};
_dashboardId = _serviceProxy.Create(dashboard);

有关完整示例,请参阅 示例:创建、检索、更新和删除 (CRUD) 控制面板。 有关创建用户负责的控制面板并将其分配给其他用户的示例,请参阅 示例:将 User-Owned 控制面板分配给其他用户

通过自定义实体窗体创建组织负责的仪表板

使用非托管解决方案导出的 customizations.xml 文件包含实体窗体和仪表板的定义。 您可以添加或修改 customizations.xml 文件以添加或更新控制面板。

通过自定义实体表单创建仪表板

  1. 登录到 Dynamics 365 for Customer Engagement。

  2. 导出解决方案。 有关进行这些操作的信息,请参阅导出、准备编辑和导入功能区

  3. 浏览到导出的解决方案文件夹中的 customizations.xml 文件,然后将其打开进行编辑。

  4. 通过搜索以下标签,在 customizations.xml 文件中浏览到仪表板区域的末尾:</Dashboards>

  5. 在标签 </Dashboards> 之前,添加以下内容以定义新的控制面板:

    <Dashboard>  
       <LocalizedNames>  
          <LocalizedName description="Dashboard_Name" languagecode="1033" />  
       </LocalizedNames>     
       <IsCustomizable>1</IsCustomizable>  
       <IsDefault>0</IsDefault>  
       <FormXml>  
          <forms type="dashboard">  
    *** Dashboard definition goes here. *** // See “Sample Dashboards” topic for the FormXML content to be used here.  
          </forms>  
       </FormXml>  
    </Dashboard>  
    
  6. 保存customizations.xml文件。

  7. 将 .zip 文件作为解决方案导入 Dynamics 365 for Customer Engagement。 详细信息:导出、准备编辑和导入功能区

限制:使用 SDK 或通过表单自定义创建控制面板

Web 应用程序中的仪表板设计器不支持使用 Dynamics 365 Customer Engagement Web 服务或通过表单自定义创建或修改的某些仪表板。 使用 SDK 或通过表单自定义创建或修改控制面板时,请避免以下情况。

概况

  • 问题: 您可以创建一个仪表板,其中包含一个选项卡,而 FormXML 中没有定义任何部分。

    解决方案:确保创建一个仪表板,其中至少为 FormXML 中的每个选项卡定义了一个部分。

  • 问题:您可以创建一个仪表板,该仪表板一个部分的 <row> 元素数量与 FormXML 中该部分 rowspan 元素的 <cell> 属性中指定的数量不同。 理想情况下, rowspan 元素的属性 <cell> 值和部分中的 <row> 元素数必须相同。

    解决方案:确保创建的仪表板的元素数与该部分元素的属性<row>中指定的rowspan元素数<cell>相同。

网格

问题:您可以创建一个包含网格的仪表板,并将<AutoExpand>网格的参数值设置为 。Auto

解决方案:确保在创建功能板时为 FormXML 中的网格指定 <AutoExpand> 参数值 Fixed

IFRAME

问题:您可以创建包含 IFRAME 的仪表板。 当您没有为 <Url> FormXML 中的 IFRAME 控件的参数指定任何值时,会发生这种情况。

解决方案:确保在 FormXML 中创建 IFRAME 时为参数指定值 <Url>

另请参阅

Microsoft Dynamics 365 Customer Engagement 仪表板
将 FormXML 用于仪表板
控制面板上的操作
示例仪表板
示例:创建、检索、更新和删除 (CRUD) 仪表板
在 Microsoft Dynamics 365 Customer Engagement 中自定义实体表单