博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.CRM 4 plugin 或服务器端,怎么获取CRM的用户语言编码?javascript 可以通过这个USER_LANGUAGE_CODE获取.

比如:如果是英文(1033) 就提示: throw new Exception("Had been submitted information could not cancel!");  如果为中文编码(2052):throw new Exception("已提交信息无法删除"); 

思路:可以在Plugin中获取SystemUserId,然后,根据这个SystemUserId获取该用户对应的usersettings数据,在usersettings数据中,有一个属性叫做“uilanguageid”,该属性记录了给定用户的UI语言。

protected static int RetrieveUserUILanguageCode(IOrganizationService service, Guid userId)

  {

   QueryExpression userSettingsQuery = new QueryExpression("usersettings");

   userSettingsQuery.ColumnSet.AddColumns("uilanguageid", "systemuserid");

   userSettingsQuery.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);

   EntityCollection userSettings = service.RetrieveMultiple(userSettingsQuery);

   if (userSettings.Entities.Count > 0)

   {

    return (int)userSettings.Entities[0]["uilanguageid"];

   }

   return 0;

  }

  拓展:考虑到每次在界面上每次都要判断一次,如何实现所有语言的判断?

  思路:可以建一个实体new_language_prompt,然后三个字段,字符号码,语言编码(比如1033,2052),提示信息。

  Javascript方面: 写一个方法:

function GetMemo(strCode) {
var returnValue = 0;
var FetchXmlStr = "<fetch mapping=\"logical\" count=\"50\">" +
"<entity name=\"new_language_prompt\">" +
"<attribute name=\"new_memo\" />" +
"<filter>" +
" <condition attribute='statecode' operator='eq' value='0' />" +
" <condition attribute='new_language_code' operator='eq' value='" + USER_LANGUAGE_CODE + "' />" +
" <condition attribute='new_name' operator='eq' value='" + strCode + "' />" +
"</filter>" +
"</entity>" +
"</fetch>";
var results = RetrieveQueryRecords(FetchXmlStr);
returnValue = results[0].selectSingleNode('./new_memo').nodeTypedValue;
return returnValue;
}

 alert(GetMemo('A00047'));//调用信息。

  Plugin:一样的。用ado.net 读取数据库,写一个方法,提供给给需要盘的地方调用。