Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Web-программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 11.07.2006, 20:28   [включить плавающее окно]   #1
Afanas
Мужской Общительный
Автор темы
 
Регистрация: 21.12.2004
Адрес: Kharkov, Ukraine
UserControl c JavaScript внутри aspx страницы

Здраствуйте, у меня возник следующий вопрос по JavaScript :
Есть пользовательский элемент управления в ASP.NET(VS2005), который состоит из 4-х ссылок и таблицы
1) при нажатии ссылки(например 1) внутри таблицы появляется надпись: выбран элемент 1... цвет ссылки меняется с черного на красный. Элемент необходимо реализовать средствами JavaScript, поскольку обновление должно происходить без PostBack.
2) Этот UserControl расположен на форме, на которой находится кнопка, при нажатии на кнопку я должен получить номер элемента, на который я нажал...или его текст...
Я реализовал данный пример средствами ASP.NET(C#) но там содержатся серверные компоненты(и хотя я установил AutoEventWireup=false) то все равно надо JavaScript...
Что я сделал на JavaScript
1) B CSS файле определил a {color:#000000;}
2) В пользовательском елементе управления создал 4 ссылки типа:
<a href="#" onclick="elem_clicked(this.id)" id="a1" tabindex="1" >1</a>
далее TestTask2.ascx
3) <%@ Control Language="C#" AutoEventWireup="false" CodeFile="TestTask2.ascx.cs" Inherits="Ucontrols_TestTask2" %>
<script type="text/javascript">
<!--
var SelectedValue;
function elem_clicked(elem)
{
var Res;
this.document.getElementById(elem).style.color="#0000ff";
for (var i=1; i<5; i++)
{
if (("a"+i)!=elem)
this.document.getElementById("a"+i).style.color="#000000";
}
Res=elem.substring(1);
document.getElementById("P1").innerText="Вы выбрали элемент со значением : "+Res;
SelectedValue=Res;
return Res;
}
//-->
</script>

<table id=”tab1”>

здесь линки из пункта 2
...
<tr>
<td colspan="4" id="td4" style="height: 30px; text-align: center; border-color:Black; border-style:solid; background-color:#CFD0D0" >
<p id="P1"></p>
</td>
</tr>
</table>

что мне надо:
a) в самом начале, пока <p> пустой, ячейка только серая, без обрамления, а мне обрамление нужно сразу
b) когда я делаю обновление страницы, то надпись внутри ячейки исчезает, а мне ее надо сохранять, также надо сохранять и выбранный линк
c) kогда я добавляю 2 таких контрола на aspx страницу
<%@ Register Src="~/Ucontrols/TestTask2.ascx" TagName="test2" TagPrefix="ucl" %> ;

<ucl:test2 ID="U_1" runat="server"/>
<ucl:test2 ID="U_2" runat="server"/>,

то вне зависимости от того, на каком я кликаю, изменения выполняются только на первом... а надо чтобы изменялся тот, на каком я нажимаю
d) мне нужно также при нажатии кнопки на форме забирать значение Res из процедуры elem_clicked(this.id)

на ASP.NET (C#) аналогично реализованный контрол работает «без боков», по всем 4 пунктам...вот собственно и все. Господа, может кто откликнется и будет в состоянии помочь мне по перечисленным вопросам, буду вам очень признателен.
Спасибо за внимание, жду ваших идей и предложений.



__________________
i'm not so rich to buy cheap stuff :)
Afanas вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.07.2006, 11:23   [включить плавающее окно]   #2
Гхост-цзы
Мужской Умудрённый
 
Аватар для Гхост-цзы
 
Регистрация: 04.06.2004
на первый взгляд:
Цитата (Afanas) »
a) в самом начале, пока <p> пустой, ячейка только серая, без обрамления, а мне обрамление нужно сразу
-- задай через css для нужного элемента
border: 2px solid #000;

Цитата
b) когда я делаю обновление страницы, то надпись внутри ячейки исчезает, а мне ее надо сохранять, также надо сохранять и выбранный линк
думается, средствами JS это сделать нереально

Цитата
d) мне нужно также при нажатии кнопки на форме забирать значение Res из процедуры elem_clicked(this.id)
а какие с этим сейчас проблемы? --- return Res; в наличии
__________________
Крылья знаний меня от людей отлучили,
Я увидел, что люди - подобие пыли.
Гхост-цзы вне форума  
Ответить с цитированием
Непрочитано 12.07.2006, 15:33   [включить плавающее окно]   #3
Afanas
Мужской Общительный
Автор темы
 
Регистрация: 21.12.2004
Адрес: Kharkov, Ukraine
Гхост-цзы - спасибо, попробую, я ведь не волшебник,а только учусь, а есть какие нибудь идеи по поводу пункта С?...

Afanas добавил :

задал для елемента TD
background-color:#CFD0D0;
height:70px;
visibility:visible;
border:solid thin #000000;
все равно, пока ничего нет - рамка не видна...только background и все...
пункт с все еще актуален...
кстати, если мне не надо PostBack, можно ли бросить runat="server" тогда я получу имя контрола_имя линка...но вот как потом в JavaScript изменить свойство этого элемента...
а то мне выдает, что не сростается...

Afanas добавил :

<a href="#" onclick="elem_clicked2(this.id)" id="a1" tabindex="1" runat="server">1</a>

тогда в качестве this.id = U_1_a1... выцепляю а1...
как мне потом его обработать...в смысле изменить color... поскольку

LinkButton L;
L=(LinkButton)this.FindControl(Element);
L.ControlStyle.ForeColor ="#0000ff";

не хавает в JS а на

this.document.getElementById(Element).style.color="#0000ff"

пишет, что так не можна...

function elem_clicked2(elem)
{
var Res;
var Element;
Element=elem.substring(4);
this.document.getElementById(Element).style.color="#FF0000";
for (var i=1; i<5; i++)
{
if (("a"+i)!=Element)
this.document.getElementById("a"+i).style.color="#000000";
}
Res=Element.substring(1);
document.getElementById("P1").innerText="Вы выбрали элемент со значением : "+Res;
document.getElementById("L1").style.color="#000000";
document.getElementById("L1").innerText="Вы выбрали элемент со значением : "+Res;
SelectedValue=Res;
return Res;
}

кто подскажет молодому, как надо и в чем я неправ? ведь на ASP.NET работает
__________________
i'm not so rich to buy cheap stuff :)
Afanas вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 17.07.2006, 13:40   [включить плавающее окно]   #4
Гхост-цзы
Мужской Умудрённый
 
Аватар для Гхост-цзы
 
Регистрация: 04.06.2004
Цитата (Afanas) »
кто подскажет молодому, как надо и в чем я неправ?
похоже на синтаксическую ошибку; а именно - тут:
Цитата
не хавает в JS а на

this.document.getElementById(Element).style.color="#0000ff"

пишет, что так не можна...
вот пример скрипта, выводящий все методы и свойства элемента document.links[].style (то бишь стиля ссылок):

<html>
<body>
<a href="#" id="a1" tabindex="1">forum</a><br>
<SCRIPT>
for(x in window.document.getElementById("a1").style){
document.write(x+"<br>");
}
</SCRIPT>
</body>
</html>

как видно, color среди них есть (и даже не один); но синтаксис разный (написание аргумента метода getElementById )
__________________
Крылья знаний меня от людей отлучили,
Я увидел, что люди - подобие пыли.
Гхост-цзы вне форума  
Ответить с цитированием
Непрочитано 17.07.2006, 15:21   [включить плавающее окно]   #5
Afanas
Мужской Общительный
Автор темы
 
Регистрация: 21.12.2004
Адрес: Kharkov, Ukraine
Гхост-цзы - спасибо,разобрал кое как...вроде заработало...
__________________
i'm not so rich to buy cheap stuff :)
Afanas вне форума  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey