Dynamics CRM 2011 编程系列(29):自定义页面

    在日常开发过程中难免碰到些古怪的需求,以至于Dynamics CRM提供的标准功能都无法完成该功能。这个时候选择开发自定义页面就是个不错的选择,通过使用ASP.NET来构建灵活的Web页面并调用Dynamics CRM中提供的API就能开发出满足一切需求的Web页面。

    我们来制作一个简单的例子吧,在这个页面中将会显示当前登录用户的所有信息。

操作步骤

图1

图2

图3

 

图4

使用到的代码

 WhoAmI.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WhoAmI.aspx.cs" Inherits="WhoAmI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="display" runat="server">
    
       
    
    </div>
    </form>
</body>
</html>


 

WhoAmI.aspx.cs

using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Net;
using System.Net.Security;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Description;

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Discovery;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Crm.Sdk.Messages;


public partial class WhoAmI : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        WhoAmIRequest request = new WhoAmIRequest();
        IOrganizationService service = GetService();
        WhoAmIResponse response = (WhoAmIResponse)service.Execute(request);

        Guid userId =response.UserId;

        Entity curUser = service.Retrieve("systemuser", userId, new ColumnSet { AllColumns = true });

        string displayMsg ="当前用户的登录信息如下:<br>";
        foreach (var attr in curUser.Attributes)
        { 
            displayMsg+=attr.Key+" : "+attr.Value.ToString()+"<br>";
        }
        display.InnerHtml=displayMsg;

    }

    private IOrganizationService GetService()
    {
        Uri orgUri = new Uri(ConfigurationManager.ConnectionStrings["svcurl"].ConnectionString);
        OrganizationServiceProxy service;
        System.ServiceModel.Description.ClientCredentials credentials = new ClientCredentials();


        credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
        service = new OrganizationServiceProxy(orgUri, null, credentials, null);

        service.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
        return service;
    }
}


 

Web.config

<?xml version="1.0"?>

<configuration>
  <connectionStrings>
    <add name="svcurl" connectionString="http://localhost:8110/test/xrmservices/2011/organization.svc"/>
  </connectionStrings>
    <system.web>
        <compilation debug="false" targetFramework="4.0" />
    </system.web>

</configuration>


 

小贴士

1.你可以将WhoAmI.aspx和WhoAmI.aspx.cs进行编译处理,并将编译好的Dll文件放在Dynamics CRM安装目录下的Bin文件中。然后将WhoAmI.aspx和Web.config文件放在ISV目录下,和本博文介绍的一样。这样我们就可以通过这样的URL"http://server/organizationname/isv/whoami.aspx",来访问自定义页面了。

 

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值