Создание пользовательского элемента управления в asp.net, который имеет свойства и методы javascript - PullRequest
0 голосов
/ 23 февраля 2011

В качестве отправной точки для создания пользовательских элементов управления я хотел бы создать элемент управления, который просто отображает число.Если мы представим, что файл .ascx не содержит ничего, кроме литерального элемента управления, а код позади устанавливает это значение равным 1.

Я тогда хочу иметь возможность делать myControl.increment ();Это приведет к запуску некоторого JavaScript, который увеличивает значение буквального элемента управления.

Я мог бы внедрить JavaScript на страницу, такой как псевдокод:

page_load
{

  scriptything.register("function increment(x) { $('#myLiteral').increment(); });

}

или что-то подобное, но это небыть myControl.increment, это будет просто increment ().Более одного элемента управления на странице могут испортить его.

Кто-нибудь знает, как мне достичь своей цели соединения javascript с пользовательским элементом управления?Я спрашиваю о невозможном?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Это очень возможно.

У меня есть класс CalledCustomControlLibrary.

, он содержит несколько папок с изображениями и скриптами.Вы можете включить эти типы элементов, используя [assemply: WebResource]

IE

[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.leftArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.rightArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_js.leftright.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.jquery-1.3.2.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.mousehold.js", "application/javascript")]

Затем в событии onload класса вы можете зарегистрировать клиентские сценарии, такие как:

        string tsJQueryJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.jquery-1.3.2.js") ;
        string tsMousehold = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.mousehold.js");
        string tsLeftRightJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.LeftRight.local_js.leftright.js");

        if (!Page.ClientScript.IsClientScriptIncludeRegistered("JQuery" )) { Page.ClientScript.RegisterClientScriptInclude("JQuery", tsJQueryJS); }
        if (!Page.ClientScript.IsClientScriptIncludeRegistered("Mousehold")) { Page.ClientScript.RegisterClientScriptInclude("Mousehold", tsMousehold); }
        if (!Page.ClientScript.IsClientScriptIncludeRegistered("LefRightJS")) { Page.ClientScript.RegisterClientScriptInclude("LeftRightJS", tsLeftRightJS); }

Весь контроль размещен просто в классе.который наследует WebControl и IPOstBackDataHandler.В частности, этот элемент управления предназначен для элемента управления, имеющего кнопку со стрелкой влево и вправо и увеличивающего или уменьшающего числовое значение в текстовом поле на основе удерживания кнопок.

0 голосов
/ 23 февраля 2011

Да, вы хотите взглянуть на разработку классов JavaScript как один из примеров (есть и другие): http://www.howtocreate.co.uk/tutorials/javascript/objects

Возможно, вы действительно захотите взглянуть на разработку элементов управления ASP.NET AJAX, которые интегрируют сервербоковое управление и возможности AJAX.Я разработал несколько и написал несколько статей на эту тему:

Для JQuery используйте это:

НТН.

...