powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Два UserControl-а и Javascript-функции
18 сообщений из 18, страница 1 из 1
Два UserControl-а и Javascript-функции
    #37563359
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли решение такой задачи: есть UserControl (внутри DropDownList, заполняется на сервере) с клиентскими функциями, например uc_SetControlWidth(value) - задает ширину списка. А если этих контрола два на странице, то функция обращается каждая к своему списку, НО вот самих функций ДВЕ, а мне ширину надо разную выставить. И дело не в ширине как таковой, а в принципе. Или в этом случае его необходимо переопределять?
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563510
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а что конкретно Вы хотите?

- чтобы функция осталась одна
или
- чтобы их имена стали разными

?
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563517
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

Ну наверно, чтобы их имена стали разными. Может быть эти скриптовые функции надо как-то по особому регистрировать. Ну должны же быть какие-то стандартные решения или нет?
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563585
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Плохо
Код: c#
1.
2.
3.
function MyFunc<%= this.ID %>() {
    ...
}



2. Хорошо: вынос функции в отдельный *.js файл.
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563587
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
<script type="text/javascript">
    function MyFunction_<%= this.ID %>() {
        var dummy = 'test';
    }
</script>
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563745
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Интересно, как должен помочь вынос в отдельный .js файл, название функции ведь все-равно остается тем же, а вот внутри функции перестает работать element.ClientID.
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563749
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот за MyFunction_<%= this.ID %> СПАСИБО!! хотя бы работает.
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563760
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masha2внутри функции перестает работать element.ClientID.передайте его в функцию еще одним параметром, делов-то
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563774
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

Я эту функцию вызываю из скрипта страницы Page, предполагается, что она не знает о внутренних элементах юзер контрола - ну что-то типа инкапсуляции, а скриптовая функция - это вроде интерфейса для внешнего доступа. Да и вообще, перенеся я эту функцию в отдельный js файл, он же подключится в одном экземпляре, как тогда мне вызывать эту функцию по отношению к конкретному контролу?
Вроде как только это _<%= this.ID %> спасает. Или я в принципе все делаю не так...
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563787
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masha2он же подключится в одном экземпляре, как тогда мне вызывать эту функцию по отношению к конкретному контролуПаганельпередайте element.ClientID в функцию еще одним параметром, делов-то
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563946
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masha2МСУ, Интересно, как должен помочь вынос в отдельный .js файл
Самым непосредственным образом.
masha2название функции ведь все-равно остается тем же, а вот внутри функции перестает работать element.ClientID.
Передавать element в аргументах функции запрещает религия?
masha2а вот за MyFunction_<%= this.ID %> СПАСИБО!! хотя бы работает.
1. 10 контролов на странице - 10 функций? А если функция / функции очень большая / большие. Да помножить на кол-во контролов на странице. Счастье?
2. А теперь попробуйте данный подход использовать в айтем-темплейтовых контролах (репитере, гриде и иже). Счастье?
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563962
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

А, Вы имеете ввиду, что в функцию контрола передаем ClientID сонтрола, а внутри функции (чтобы установить ширину у списка) пишем ClientID+'_ListID' - так наверно?
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37563974
masha2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Да да да, я все поняла, все получилось! Спасибо БОЛЬШОЕ!
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37622722
skierok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!не могли бы рассказать как вы разобрались с етой проблеймой?

создал User Control в нем Автокоплит!Когда помещаю на одну страницу контрол один работает корректно,а второй не работает вобще!Помогите разобраться с проблемой. Спасибо откликнувшимся.



Серверная часть:

public partial class AutocompleteWbUsControl : UserControl, ICallbackEventHandler
{
private List<string> list2 = new List<string>();
private List<string> list;

protected void Page_Load(object sender, EventArgs e)
{
String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
String callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + ";}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);

list2.Add("Валя");
list2.Add("Вуся");
list2.Add("Юля");
list2.Add("Клава");
list2.Add("Вера");
list2.Add("Ксения");
list2.Add("Настя");
list2.Add("Наташа");
list2.Add("Лена");
list2.Add("Люда");
list2.Add("Варя");
list2.Add("Воля");
list2.Add("Вика");
list2.Add("Воровка");
list2.Add("Вязьма");
}

protected string str;

public void RaiseCallbackEvent(string eventArgument)
{
str = eventArgument;
}

public string GetCallbackResult()
{
if (!string.IsNullOrEmpty(str))
{
list = (from p in list2
where p.ToUpper().StartsWith(str.ToUpper())
select p).ToList();
list.Sort();
}

string result = "";
if (list != null)
{
//result = list.Aggregate(str, (current, l) => current + (l + " "));
foreach (var l in list)
{
result += l + " ";
}
}
return result;
}
}
}

Клиенская:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AutocompleteWbUsControl.ascx.cs" ClientIDMode="Predictable" Inherits="WebApplication1.AutocompleteWbUsControl" %>


<div style="margin: 0 auto; text-align: center; background-color: cadetblue; width: 300px;height: 300px">
<h3>
АВТОКОМПЛИТ</h3>
<input id="Text1" type="text" onkeyup="LookUpStock()" style="width: 150px;" />
<br />
<select id="SelectResult" name="D1" multiple="multiple" size="0" onchange="changeOptionSelElem()"
style="width: 150px; visibility: hidden;">
</select>
<br />
</div>
<script type="text/javascript">
var selectResult = document.getElementById('SelectResult');
function ReceiveServerData(rValue) {
if (!rValue.length) {
return;
}
var rows = rValue.split(" ");
selectResult.options.length = 0;
selectResult.style.visibility = "visible";
var i;
for (i = 0; i < rows.length - 1; ++i) {
selectResult.options[i] = new Option(rows[i], i);
}
selectResult.size = i;
}

function LookUpStock() {
CallServer(document.getElementById('Text1').value, "");
}

function changeOptionSelElem() {
document.getElementById('Text1').value = selectResult.options[selectResult.selectedIndex].text;
selectResult.style.visibility = "hidden";
}
</script>
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37622988
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
код оформи не видно нифига
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37623547
skierok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
public partial class AutocompleteWbUsControl : UserControl, ICallbackEventHandler
 {
 private List<string> list2 = new List<string>();
 private List<string> list;

 protected void Page_Load(object sender, EventArgs e)
 {
 String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
 String callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + ";}";
 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);

 list2.Add("Валя");
 list2.Add("Вуся");
 list2.Add("Юля");
 list2.Add("Клава");
 list2.Add("Вера");
 list2.Add("Ксения");
 list2.Add("Настя");
 list2.Add("Наташа");
 list2.Add("Лена");
 list2.Add("Люда");
 list2.Add("Варя");
 list2.Add("Воля");
 list2.Add("Вика");
 list2.Add("Воровка");
 list2.Add("Вязьма");
 }

 protected string str;

 public void RaiseCallbackEvent(string eventArgument)
 {
 str = eventArgument;
 }

 public string GetCallbackResult()
 {
 if (!string.IsNullOrEmpty(str))
 {
 list = (from p in list2
 where p.ToUpper().StartsWith(str.ToUpper())
 select p).ToList();
 list.Sort();
 }

 string result = "";
 if (list != null)
 {
 //result = list.Aggregate(str, (current, l) => current + (l + " "));
 foreach (var l in list)
 {
 result += l + " ";
 }
 }
 return result;
 }
 }
}



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AutocompleteWbUsControl.ascx.cs" ClientIDMode="Predictable" Inherits="WebApplication1.AutocompleteWbUsControl" %>


<div style="margin: 0 auto; text-align: center; background-color: cadetblue; width: 300px;height: 300px">
 <h3>
 АВТОКОМПЛИТ</h3>
 <input id="Text1" type="text" onkeyup="LookUpStock()" style="width: 150px;" />
 

 <select id="SelectResult" name="D1" multiple="multiple" size="0" onchange="changeOptionSelElem()"
 style="width: 150px; visibility: hidden;">
 </select>
 

 </div>



Код: javascript
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.
 <script type="text/javascript">
 var selectResult = document.getElementById('SelectResult');
 function ReceiveServerData(rValue) {
 if (!rValue.length) {
 return;
 }
 var rows = rValue.split(" ");
 selectResult.options.length = 0;
 selectResult.style.visibility = "visible";
 var i;
 for (i = 0; i < rows.length - 1; ++i) {
 selectResult.options[i] = new Option(rows[i], i);
 }
 selectResult.size = i;
 }

 function LookUpStock() {
 CallServer(document.getElementById('Text1').value, "");
 }

 function changeOptionSelElem() {
 document.getElementById('Text1').value = selectResult.options[selectResult.selectedIndex].text;
 selectResult.style.visibility = "hidden";
 }
 </script>
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37623643
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
onkeyup="LookUpStock()" замени на onkeyup="LookUpStock(this)"

onchange="changeOptionSelElem()" замени на onchange="changeOptionSelElem(this)"

так сможешь избавиться от getElementById и вынести свой JS-код в отдельный *.js файл
...
Рейтинг: 0 / 0
Два UserControl-а и Javascript-функции
    #37624012
skierok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!Сейчас попробую то что вы сказали.
Но мне не нужно JS в отдельном файле!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Два UserControl-а и Javascript-функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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