Кастомизация
03
Апр
4

Картинки на форме CRM, эпизод I

Хотите помнить всех своих клиентов в лицо? Тогда Вы по адресу 🙂 Сейчас докастомизируем CRM до того, что он будет добавлять в карточки рисунки и выводить их на форму!

ASPX

  • Откройте Visual Studio 2005 или Visual Studio 2008 (данный пример будет объясняться на 2008). Перейдите New — Web Site. Выделите File System для определения местоположения and выберите Visual C# в качестве Language; затем введите путь для сохранения файлов, например: C:\Inetpub\ContactPictures (соответственно создайте нужную папку в inetpub). Учтите, что путь расположения файлов должен быть отличен от того, где установлен сайт CRM. OK;
  • На странице Default.aspx, замените код на представленный ниже. Этот код добавляет на страницу HTML таблицу, элемент для вывода изображений, загрузчик изображения (FileUpload), который позволяет просматривать папки и файлы и выбирать изображение для загрузки, и кнопку для загрузки выбранного изображения:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
    Inherits="_Default" %>
    <!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>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <table>
    <tr>
    <td>
    <asp:Image ID="Image1" runat="server"
    Height="302px" Width="305px"
    EnableViewState="False" /></td>
    </tr>
    <tr>
    <td>
    <asp:FileUpload ID="FileUpload1"
    runat="server"
    Width="304px" /></td>
    </tr>
    </table>
    <asp:Button ID="Button1" runat="server"
    OnClick="Button1_Click"
    Text="Upload" />
    </div>
    </form>
    </body>
    </html>
  • Отредактируем код – щелкните правой кнопкой мыши по Default.aspx в Solution Explorer и выберите View Code. Замените код следующим:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (Request.QueryString["id"] != null)
    {
    string contactId = new Guid(Request.QueryString["id"]).ToString();
    string pictureFilename = Path.Combine(Server.MapPath("/" +
    "contactPictures"),
    contactId + ".jpg");
    
    if (File.Exists(pictureFilename))
    {
    string pictureURL = "../" + "contactPictures/GetPic.aspx?id="
    + contactId + "&temp=" + Guid.NewGuid().ToString();
    Image1.ImageUrl = pictureURL;
    }
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    string contactId = new Guid(Request.QueryString["id"]).ToString();
    if (FileUpload1.HasFile)
    {
    string pictureFilename = Path.Combine(Server.MapPath("/" +
    "contactPictures"),
    contactId + ".jpg");
    
    FileUpload1.SaveAs(pictureFilename);
    
    string pictureURL = "../" + "contactPictures/GetPic.aspx?id="
    + contactId + "&temp=" + Guid.NewGuid().ToString();
    Image1.ImageUrl = pictureURL;
    }
    }
    }
    



  • Создайте другую страницу щелкнув на имени проекта в Solution Explorer и выбрав Add New Item. Назовите страницу GetPic.aspx и жмите кнопку Add. Сотрите весь код на странице и вбейте следующую строчку:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetPic.aspx.cs" Inherits="GetPic" %>
  • Отредактируем код – щелкните правой кнопкой мыши по GetPic.aspx в Solution Explorer и выберите View Code. Замените код следующим:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    public partial class GetPic : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    string picid = Request.QueryString["id"];
    string pictureFilename = Path.Combine(
    Server.MapPath("/contactPictures"), picid + ".jpg");
    Response.Clear();
    Response.ClearHeaders();
    Response.AppendHeader("content-type", "image/jpeg");
    Response.WriteFile(pictureFilename);
    Response.Flush();
    Response.End();
    }
    }
    
  • Соберите приложение, перейдя в меню Build — Build Web Siteю.



IIS

После того как Вы собрали приложение и протестировали его, Вы можете его публиковать. Вы должны создать виртуальную директорию для нашего приложения в Internet Information Services (IIS):

  • Откройте IIS Manager перейдя Control Panel — Administrative Tools — Internet Information Services (IIS) Manager;
  • Раскройте сервер (в этом примере CRMTEST) и выберите папку Application Pools. Создадим новый application pool для нашего приложения, таким образом изолируем его, чтобы он не навредил сайту CRM. Щелкните правой кнопкой мыши по Application Pools и New — Application Pool. Введите ContactPictures в поле Application Pool ID и ОК.


  • Щелкните правой кнопкой мыши по сайту CRM (по дефолту Microsoft Dynamics CRM) и выберите New — Virtual Directory. В первом окне мастера жмите Next, во-втором в поле Alias введите ContactPictures. В третьем введите путь к папке на физическом диске, которую мы создали для веб-приложения (C:\Inetpub\ContactPictures). Наконец отметьте Read и Run scripts (such as ASP) и жмите Next. Ну и финиш.



  • Щелкните правой кнопкой мыши на виртуальной директории, которую Вы только что создали и выберите Свойства. Измените application pool на тот, что Вы создали ранее (ContactPictures). Переместитесь на вкладку ASP.NET и удостоверьтесь, что в качестве версии ASP.NET установлена 2.0.50727. ОК.


Кастомизация CRM

  • Перейдите Параметры – Настройка – Настроить объекты. Щелкните по объекту Контакт. Затем перейдите на Формы и представления и кликайте по Форме;
  • Щелкните Добавить вкладку и введите имя новой вкладки (например Фото), ОК. Щелкните Добавить раздел, назовите его как-нибудь и ОК.



  • Далее жмем Добавить Интернет-кадр. Поставьте галку «Отправить код типа объекта и уникальный идентификатор как параметры» и снимите «Ограничить использование сценариев между кадрами»;
  • Перейдите на вкладку Форматирование и поставьте галку «Автоматически развертывать для заполнения доступной области окна». ОК;
  • Закрывайте, сохраняйте и публикуйте.



Тестируем

  • Перейдите Рабочая область — Контакт — Создать. Забейте чем-нибудь обязательные поля и сохраните (не сохранив запись Вы не сможете использовать это решение, поскольку только сохраненная запись имеет GUID, который назначается изображению);
  • Перейдите на вкладку Фото. Введите полный путь к рисунку, которое Вы хотите загрузить или щелкните Browse и выберите нужный файл. Затем щелкните Upload, Вы увидите загруженное изображение, которое теперь прикреплено к записи.


В таком виде использование этого приложение, конечно, мало вероятно. Поэтому в зависимости от Вашего проекта с помощью нехитрых манипуляций с HTML-кодом и формой CRM (в основном) подгоните его под Ваши нужды 🙂

Комментарии (4)
  • Татьяна 03.04.2009

    Такой вопрос. В Visual Studio 2008 создала New – Web Site. Когда нажимаю на Default.aspx в Solution Explorer и выбераю View Code вылазиет ошибка

    «There is no editor available for ‘C:\……\Default.aspx’.
    Make sure the application fo the file type (.aspx) is installed»

    Не подскажите что можно сделать?

  • slivka_83 03.04.2009

    Это какая-то общая ошибка, попробуйте поискать ее в гугле.

  • Татьяна 03.04.2009

    Спасибо большое! Все получилось! Здорово!

  • slivka_83 03.04.2009

    Пожалуйста 🙂

*

code