Dynamics CRM 2011编程系列(40):Portal的打造(一)

Dynamics CRM 2011编程系列(40):Portal的制作(一)

   本博文来聊聊怎么制作Dynamics CRM 2011 系统的Portal吧。制作Portal有两种方式可以供我们选择,它们分别为:1.使用Dynamics CRM 2011 支持的Portal控件;2.直接调用Dynamics CRM 2011 的数据库。

   这两种方法各有各的优势,在制作Portal的时候通常都将这两者结合起来一起使用。

   咱们先来了解下Dynamics CRM 2011 支持的Portal控件吧。在使用Dynamics CRM 2011支持的Portal控件前,我们先要生成一个早期绑定的数据源,生成该数据源的代码如下:

Dynamics CRM 2011编程系列(40):Portal的打造(一)

图1

待工具“crmsvcutil.exe“生成完代码“Xrm.cs”后按如下步骤将它添加到Portal站点项目中。

Dynamics CRM 2011编程系列(40):Portal的打造(一) 

图2

Dynamics CRM 2011编程系列(40):Portal的打造(一)

图3 为portal项目添加程序集引用

 

修改Portal站点Web.config文件如下:

<configuration>
	<configSections>
		<section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection,Microsoft.Xrm.Client"/>
	</configSections>
	<system.web>
		<compilation debug="true" targetFramework="4.0">
			<assemblies>
				<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
			</assemblies>
		</compilation>
		<pages>
			<controls>
				<add tagPrefix="crm" namespace="Microsoft.Xrm.Portal.Web.UI.WebControls" assembly="Microsoft.Xrm.Portal"/>
			</controls>
		</pages>
	</system.web>
	<connectionStrings>
		<add name="Xrm" connectionString="Server=http://192.168.0.30:8110/test;Domain=crm;Username=administrator;Password=Pa$$w0rd"/>
	</connectionStrings>
	<microsoft.xrm.client>
		<contexts>
			<add name="Xrm" type="Xrm.XrmServiceContext,App_Code"></add>
		</contexts>
	</microsoft.xrm.client>
	<system.serviceModel>
		<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
	</system.serviceModel>
</configuration>


 

至此Portal的框架已经搭建完毕,现在我们来看看Dynamics CRM为我们提供了哪些数据显示控件:

LinqDataSource

Aspx代码

<asp:LinqDataSource ID="Contacts" ContextTypeName="Xrm.XrmServiceContext" TableName="ContactSet" runat="server" />
<asp:GridView ID="GridView1" DataSourceID="Contacts" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:TemplateField HeaderText="First Name">
            <ItemTemplate>
                <asp:Label ID="Label1" Text='<%# Eval("firstname")%>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Last Name">
            <ItemTemplate>
                <asp:Label ID="Label2" Text='<%# Eval("lastname")%>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="City">
            <ItemTemplate>
                <asp:Label ID="Label3" Text='<%#Eval("address1_city") %>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

显示效果

Dynamics CRM 2011编程系列(40):Portal的打造(一)

CrmMetadataDataSource

Aspx代码

<crm:CrmMetadataDataSource ID="PriorityCodes" runat="server"
    EntityName="campaign"
    AttributeName="typecode" />
<asp:DropDownList ID="DropDownList1" runat="server"
    DataSourceID="PriorityCodes"
    DataTextField="OptionLabel"
    DataValueField="OptionValue" />


显示效果

Dynamics CRM 2011编程系列(40):Portal的打造(一)

 

SavedQueryDataSource

Aspx代码

<crm:SavedQueryDataSource ID="ActiveContacts" SavedQueryName="可用联系人" runat="server" />
<asp:GridView ID="GridView2" DataSourceID="ActiveContacts" AutoGenerateColumns="true" runat="server">
</asp:GridView>


显示效果

Dynamics CRM 2011编程系列(40):Portal的打造(一)

XrmServiceContext

Aspx代码

<asp:GridView runat="server" ID="ContactsGridView" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="First Name">
            <ItemTemplate>
                <asp:Label ID="Label1" Text='<%# Eval("firstname")%>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Last Name">
            <ItemTemplate>
                <asp:Label ID="Label2" Text='<%# Eval("lastname") %>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="City">
            <ItemTemplate>
                <asp:Label ID="Label3" Text='<%# Eval("address1_city") %>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns></asp:GridView>


Aspx.cs代码

        var xrm = new Xrm.XrmServiceContext("Xrm");
        var exampleContacts = xrm.ContactSet;

        ContactsGridView.DataSource = exampleContacts;
        ContactsGridView.DataBind();


显示效果

Dynamics CRM 2011编程系列(40):Portal的打造(一)

 

小结

     由于找不到程序集“AntiXssLibrary ”的4.0版本,所以2个控件没能正常使用。它们分别是“使用Fetch来过滤数据源的CrmDataSource控件”和“CrmEntityFormView ”。

大家要是能找到这个程序集可以发给我。(:D)