powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Custom AjaxControlToolkit HTMLEdotor
12 сообщений из 12, страница 1 из 1
Custom AjaxControlToolkit HTMLEdotor
    #37985278
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Оказался ну очень нужен AjaxControlToolkit HTMLEditor. Но нужно сделать с настраиваемой панелью...
У меня в проекте (веб-приложение) используется несколько компонентов тулкита и все удачно, но только с этим компонентом возникли некоторые сложности...
Посмотрев пример в тулките, решила сделать аналогично.

Вот файл EDSamples.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
using System.Collections;
using System.Collections.ObjectModel;
using AjaxControlToolkit.HTMLEditor;

namespace PlatUsluga.Code.EditorHTML
{
    public class CustomEdit : AjaxControlToolkit.HTMLEditor.Editor
  {
     protected override void FillBottomToolbar()
     {
         BottomToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.DesignMode());
         BottomToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HtmlMode());
         BottomToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.PreviewMode());
     }

     protected override void FillTopToolbar()
     {
         Collection<AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption> options;
         AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption option;

         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.Bold());
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.Italic());
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.Underline());
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HorizontalSeparator());

         AjaxControlToolkit.HTMLEditor.ToolbarButton.FixedForeColor FixedForeColor = new AjaxControlToolkit.HTMLEditor.ToolbarButton.FixedForeColor();
         TopToolbar.Buttons.Add(FixedForeColor);
         AjaxControlToolkit.HTMLEditor.ToolbarButton.ForeColorSelector ForeColorSelector = new AjaxControlToolkit.HTMLEditor.ToolbarButton.ForeColorSelector();
         ForeColorSelector.FixedColorButtonId = FixedForeColor.ID = "FixedForeColor";
         TopToolbar.Buttons.Add(ForeColorSelector);
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.ForeColorClear());
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HorizontalSeparator());

         AjaxControlToolkit.HTMLEditor.ToolbarButton.FontName fontName = new AjaxControlToolkit.HTMLEditor.ToolbarButton.FontName();
         TopToolbar.Buttons.Add(fontName);

         options = fontName.Options;
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "arial,helvetica,sans-serif";
         option.Text = "Arial";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "courier new,courier,monospace";
         option.Text = "Courier New";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "times new roman,times,serif";
         option.Text = "Times New Roman";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "impact";
         option.Text = "Impact";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "wingdings";
         option.Text = "WingDings";
         options.Add(option);

         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HorizontalSeparator());
         AjaxControlToolkit.HTMLEditor.ToolbarButton.FontSize fontSize = new AjaxControlToolkit.HTMLEditor.ToolbarButton.FontSize();
         TopToolbar.Buttons.Add(fontSize);

         options = fontSize.Options;
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "8pt";
         option.Text = "1 ( 8 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "10pt";
         option.Text = "2 (10 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "12pt";
         option.Text = "3 (12 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "14pt";
         option.Text = "4 (14 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "18pt";
         option.Text = "5 (18 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "24pt";
         option.Text = "6 (24 pt)";
         options.Add(option);
         option = new AjaxControlToolkit.HTMLEditor.ToolbarButton.SelectOption();
         option.Value = "36pt";
         option.Text = "7 (36 pt)";
         options.Add(option);

         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HorizontalSeparator());
         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.RemoveStyles());

         TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.HorizontalSeparator());
         TopToolbar.Buttons.Add(new PlatUsluga.Code.EditorHTML.CustomToolbarButton.InsertDate());
         TopToolbar.Buttons.Add(new PlatUsluga.Code.EditorHTML.CustomToolbarButton.InsertIcon());
     }

     public override string ButtonImagesFolder
     {
         get
         {
             return "~/Image/HTMLEditor.customButtons/";
         }
     }

  }

}



Вот файл EdCustomButtonsAndPopups.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Reflection;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Design;
using System.Security.Permissions;
using System.Collections;
using System.Collections.ObjectModel;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Schema;
using System.Globalization;
using System.CodeDom;
using System.Drawing;
using System.IO;
using AjaxControlToolkit;
using AjaxControlToolkit.HTMLEditor;
using AjaxControlToolkit.HTMLEditor.ToolbarButton;

[assembly: WebResource("App_Scripts.HTMLEditor.scripts.InsertDate.js", "application/x-javascript")]

namespace PlatUsluga.Code.EditorHTML.CustomToolbarButton
{
    [ParseChildren(true)]
    [PersistChildren(false)]
    [RequiredScript(typeof(OkCancelPopupButton))]
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1501:AvoidExcessiveInheritance")]
    public class InsertIcon : DesignModePopupImageButton
    {

        #region [ Properties ]

        [DefaultValue(10)]
        [Category("Appearance")]
        [Description("Icons in one row of the ralated popup")]
        public int IconsInRow
        {
            get { return (int)(ViewState["IconsInRow"] ?? 10); }
            set { ViewState["IconsInRow"] = value; }
        }

        [DefaultValue("~/Image/HTMLEditor.icons/")]
        [Category("Appearance")]
        [Description("Folder used for icons")]
        public string IconsFolder
        {
            get { return (string)(ViewState["IconsFolder"] ?? "~/Image/HTMLEditor.icons/"); }
            set { ViewState["IconsFolder"] = value; }
        }

        #endregion

        #region [ Methods ]

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            RelatedPopup = new CustomPopups.InsertIconPopup();
            (RelatedPopup as CustomPopups.InsertIconPopup).IconsInRow = IconsInRow;
            (RelatedPopup as CustomPopups.InsertIconPopup).IconsFolder = IconsFolder;
        }

        protected override void OnPreRender(EventArgs e)
        {
            RegisterButtonImages("ed_insertIcon");
            base.OnPreRender(e);
        }

        protected override string ClientControlType
        {
            get { return "Sys.Extended.UI.HTMLEditor.CustomToolbarButton.InsertIcon"; }
        }

        public override string ScriptPath
        {
            get { return "~/App_Scripts/HTMLEditor.scripts/InsertIcon.js"; }
        }

        public override string ToolTip
        {
            get { return "Insert predefined icon"; }
        }

        #endregion
    }

    [ParseChildren(true)]
    [PersistChildren(false)]
    [RequiredScript(typeof(MethodButton))]
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1501:AvoidExcessiveInheritance")]
    public class InsertDate : MethodButton
    {
        #region [ Methods ]

        protected override void OnPreRender(EventArgs e)
        {
            RegisterButtonImages("ed_date");
            base.OnPreRender(e);
        }

        protected override string ClientControlType
        {
            get { return "Sys.Extended.UI.HTMLEditor.CustomToolbarButton.InsertDate"; }
        }

        public override string ScriptPath
        {
            get { return "~/App_Scripts/HTMLEditor.scripts/InsertDate.js"; }
        }

        public override string ToolTip
        {
            get { return "Insert current date"; }
        }

        #endregion
    }
}

namespace PlatUsluga.Code.EditorHTML.CustomPopups
{
    [ParseChildren(true)]
    [RequiredScript(typeof(AjaxControlToolkit.HTMLEditor.Popups.AttachedTemplatePopup))]
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1501:AvoidExcessiveInheritance")]
    internal class InsertIconPopup : AjaxControlToolkit.HTMLEditor.Popups.AttachedTemplatePopup
    {

        #region [ Properties ]

        [DefaultValue(10)]
        [Category("Appearance")]
        [Description("Icons in one row")]
        public int IconsInRow
        {
            get { return (int)(ViewState["IconsInRow"] ?? 10); }
            set { ViewState["IconsInRow"] = value; }
        }

        [DefaultValue("~/Image/HTMLEditor.icons/")]
        [Category("Appearance")]
        [Description("Folder used for icons")]
        public string IconsFolder
        {
            get { return (string)(ViewState["IconsFolder"] ?? "~/Image/HTMLEditor.icons/"); }
            set { ViewState["IconsFolder"] = value; }
        }

        #endregion

        #region [ Methods ]

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1055:UriReturnValuesShouldNotBeStrings")]
        protected string LocalResolveUrl(string path)
        {
            string temp = base.ResolveUrl(path);
            Regex _Regex = new Regex(@"(\(S\([A-Za-z0-9_]+\)\)/)", RegexOptions.Compiled);
            temp = _Regex.Replace(temp, "");
            return temp;
        }

        protected override void CreateChildControls()
        {
            Table table = new Table();
            TableRow row = null;
            TableCell cell;

            string iconsFolder = LocalResolveUrl(this.IconsFolder);
            if (iconsFolder.Length > 0)
            {
                string lastCh = iconsFolder.Substring(iconsFolder.Length - 1, 1);
                if (lastCh != "\\" && lastCh != "/") iconsFolder += "/";
            }

            if (Directory.Exists(System.Web.HttpContext.Current.Server.MapPath(iconsFolder)))
            {
                string[] files = Directory.GetFiles(System.Web.HttpContext.Current.Server.MapPath(iconsFolder));
                int j = 0;

                foreach (string file in files)
                {
                    string ext = Path.GetExtension(file).ToLower();
                    if (ext == ".gif" || ext == ".jpg" || ext == ".jpeg" || ext == ".png")
                    {
                        if(j==0)
                        {
                            row = new TableRow();
                            table.Rows.Add(row);
                        }
                        cell = new TableCell();
                        System.Web.UI.WebControls.Image image = new System.Web.UI.WebControls.Image();
                        image.ImageUrl = iconsFolder + Path.GetFileName(file);
                        image.Attributes.Add("onmousedown", "insertImage(\"" + iconsFolder + Path.GetFileName(file) + "\")");
                        image.Style[HtmlTextWriterStyle.Cursor] = "pointer";
                        cell.Controls.Add(image);
                        row.Cells.Add(cell);

                        j++;
                        if (j == IconsInRow) j = 0;
                    }
                }
            }
            table.Attributes.Add("border", "0");
            table.Attributes.Add("cellspacing", "2");
            table.Attributes.Add("cellpadding", "0");
            table.Style["background-color"] = "transparent";

            Content.Add(table);

            base.CreateChildControls();
        }

        #endregion
    }
}



Вот код простейшей формы:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="MyDogBlank.aspx.cs" Inherits="PlatUsluga._0_Urist.MyDogBlank" %>

<%@ MasterType VirtualPath="~/Site.Master" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Namespace="PlatUsluga.Code.EditorHTML" TagPrefix="cust" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <asp:UpdatePanel ID="UP1" runat="server">
        <ContentTemplate>
              <cust:CustomEdit ID="MyHTMLEditor" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>



И тут же в возникает следующая ошибка:
Неизвестный элемент "CustomEdit". Это может произойти в случае ошибки компиляции на веб-узле или отсутствия файла web.config.

Где-то я ошиблась, а никак не пойму где...
Подскажите, пожалуйста!!!
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37985410
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файлы EDSamples.cs и EdCustomButtonsAndPopups.cs у меня лежат в папке прилоджения CODE. Я их перенесла в папку APP_CODE и этот пример заработал... Но как только добавила на форму другой компонент тулкита - опять пошли ошибки...
Может быть это просто конфликт тулкита и моего класса?
Непонятно...
Тогда, может быть, надо этот класс вынести в отдельный проект и подключать как отдельную библиотеку?
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37985521
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeroNa,

у вас WebSite или WebApplication?
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37985580
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationVeroNa,

у вас WebSite или WebApplication?

WebApplication
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37985787
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeroNapationVeroNa,

у вас WebSite или WebApplication?

WebApplication
а что тогда за папка APP_CODE?
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37987572
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationVeroNaпропущено...


WebApplication
а что тогда за папка APP_CODE?

Это я для проверки создала...
Чтобы убедиться, что в этом случае компонент будет работать...
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37987936
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeroNapationVeroNa,

у вас WebSite или WebApplication?

WebApplication


VeroNapationа что тогда за папка APP_CODE?

Это я для проверки создала...
Чтобы убедиться, что в этом случае компонент будет работать...

такое ощущение , что нет
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37987960
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation
такое ощущение , что нет

В смысле?

Нет - не будет работать?
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37988127
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeroNapationтакое ощущение , что нет

В смысле?

Нет - не будет работать?
нет - это WebSite
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37988196
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationVeroNaпропущено...


В смысле?

Нет - не будет работать?
нет - это WebSite

У меня в проекте этой папки нет как класса... Я просто проверяла... Потом её удалила...
Я сейчас вынесла этот контрол в отдельную сборку и всё стало работать... Видимо, всё-таки был конфликт самого тулкита и моего класса, когда они используются на одной странице...
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37988446
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VeroNa Видимо, всё-таки был конфликт самого тулкита и моего класса, когда они используются на одной странице...

нет, видимо, ваш контрол не мог быть найден, в WebApplication подобной проблемы не было бы
...
Рейтинг: 0 / 0
Custom AjaxControlToolkit HTMLEdotor
    #37988493
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationVeroNa Видимо, всё-таки был конфликт самого тулкита и моего класса, когда они используются на одной странице...

нет, видимо, ваш контрол не мог быть найден, в WebApplication подобной проблемы не было бы

Да у меня и есть WebApplication. И он изначально в нем не хотел работать...
А WebSite меня абсолютно не устраивает и я такой проект принципиально не создаю.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Custom AjaxControlToolkit HTMLEdotor
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]