本博文来聊聊怎么制作Dynamics CRM 2011 系统的Portal吧。制作Portal有两种方式可以供我们选择,它们分别为:1.使用Dynamics CRM 2011 支持的Portal控件;2.直接调用Dynamics CRM 2011 的数据库。
这两种方法各有各的优势,在制作Portal的时候通常都将这两者结合起来一起使用。
咱们先来了解下Dynamics CRM 2011 支持的Portal控件吧。在使用Dynamics CRM 2011支持的Portal控件前,我们先要生成一个早期绑定的数据源,生成该数据源的代码如下:
图1
待工具“crmsvcutil.exe“生成完代码“Xrm.cs”后按如下步骤将它添加到Portal站点项目中。
图2
图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为我们提供了哪些数据显示控件:
<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>
<crm:CrmMetadataDataSource ID="PriorityCodes" runat="server" EntityName="campaign" AttributeName="typecode" /> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="PriorityCodes" DataTextField="OptionLabel" DataValueField="OptionValue" />
<crm:SavedQueryDataSource ID="ActiveContacts" SavedQueryName="可用联系人" runat="server" /> <asp:GridView ID="GridView2" DataSourceID="ActiveContacts" AutoGenerateColumns="true" runat="server"> </asp:GridView>
<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>
var xrm = new Xrm.XrmServiceContext("Xrm"); var exampleContacts = xrm.ContactSet; ContactsGridView.DataSource = exampleContacts; ContactsGridView.DataBind();
由于找不到程序集“AntiXssLibrary ”的4.0版本,所以2个控件没能正常使用。它们分别是“使用Fetch来过滤数据源的CrmDataSource控件”和“CrmEntityFormView ”。
大家要是能找到这个程序集可以发给我。(:D)