需求:设置窗体中某个控件的值为服务器时间。
解决方案:通过一个一般处理程序获取服务器时间,然后通过ajax形式获取到此服务器时间并赋值给界面控件。
1、新建一个一般处理程序GetSererTimeHandler.ashx,
代码如下:
<%@ WebHandler Language="C#" Class="GetSererTimeHandler" %>
using System;
using System.Web;
namespace IsWaterWeb
{
public class GetSererTimeHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string action = context.Request["action"];
if (action == "GetTime")
{
string date = DateTime.Now.ToString();
context.Response.Write(date);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Js调用代码如下:
// get server time
function getServerTime() {
if (Xrm.Page.ui.getFormType() == 1) {
$.post("/isv/Handlers/GetSererTimeHandler.ashx", { "action": "GetTime" }, changeShowTime);
}
}
//new Date("2009/02/03 11:12:13")
var changeShowTime = function (data) {
Xrm.Page.getControl("hxcs_fdatetimeofrequesthelp").getAttribute().setValue(new Date(data)); //将服务器时间赋值给窗体控件显示
};
注意:由于这里使用到了jquery代码,所以在资源文件中,要先引入jquery.js库。如下:
备注:如果你是在应用程序中新建的一般处理程序,那么你build应用程序后,将bin中的dll以及GetSererTimeHandler.ashx文件一同拷贝到CRM服务器上面去。我这里的应用程序名称是IsWaterWeb,对应生成的dll是IsWaterWeb.dll,将dll一同拷贝到CRM服务器上面的指定文件夹下,如:C:\Program Files\Microsoft Dynamics CRM\CRMWeb\ISV\bin。如果没有bin目录,就新建一个。一般处理程序就拷贝到如下目录:
如果是在web网站中新建的一般处理程序,那么你可以直接把GetSererTimeHandler.ashx,和GetSererTimeHandler.ashx.cs一起拷贝到如上目录。