Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как изменить цвет строки в ListBox ? / 25 сообщений из 38, страница 1 из 2
05.05.2004, 18:18
    #32507961
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Как изменить цвет не во всём списке ListBox, а в отдельной строке ListBox4.Items(5) ?

Я и так и сяк пытался - ни фига. Поискал через Yahoo, там есть какая-то дребедень непонятная, но только под Win.

...
Рейтинг: 0 / 0
06.05.2004, 04:12
    #32508300
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
В ASP.NET - никак.

Если в javasctipt нет такой функции, то скорее это сделать не удастся.
...
Рейтинг: 0 / 0
06.05.2004, 11:10
    #32508660
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Поскольку конструкция ListBox4.Items[5].Attributes.Add("style","color:red"); не работает, правда я не разбирался почему, то могу предложить использовать жабускрипт, что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 
<script language=javascript>
<! --
 
document.getElementById('<%=ListBox1.ClientID%>')[ 5 ].style.color='red'
// -->
 
</script>
...
Рейтинг: 0 / 0
06.05.2004, 13:02
    #32508941
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
profil,
я испытал и способ добавления атрибута и второй способ - джаваскрипт. Ошибки нету, браузер не ругается, но и цвет не меняется.
Что скажешь?
Может ты ошибся - надо не color менять, а какой-нибудь forecolor?

...
Рейтинг: 0 / 0
06.05.2004, 13:15
    #32508980
Павел Воронцов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<HTML>
<HEAD>
<TITLE>Title</TITLE>
</HEAD>
<STYLE>
.black {background-color:white; color:black;}
.white {background-color:black; color:white;}
.red {background-color:red; color:white;}
</STYLE>
<BODY>
<FORM NAME="F">
<SELECT name="s">
<OPTION VALUE="0" SELECTED WIDTH="10"> </OPTION>
<OPTION VALUE="1" CLASS="black" WIDTH="10">BlackBlackBlackBlackBlackBlackBlackBlack</OPTION>
<OPTION VALUE="2" CLASS="white" WIDTH="10">WhiteWhiteWhiteWhiteWhiteWhiteWhiteWhite</OPTION>
<OPTION VALUE="3" CLASS="red" WIDTH="10">Red  Red  Red  Red  Red  Red  Red  Red  </OPTION>
</SELECT>
<INPUT type="button" value="do" onClick="alert(F.s.value); return true"/>
</FORM>
</BODY>
</HTML>
...
Рейтинг: 0 / 0
06.05.2004, 13:18
    #32508988
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
код веб формы:
Код: plaintext
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.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
	<HEAD>
		<title>WebForm1</title>
	</HEAD>
<script language=javascript>
<! --
 
function togreen()
{
	document.getElementById('<%=ListBox1.ClientID%>')[ 3 ].style.color='green'	
}
// -->
 
</script>
	<body MS_POSITIONING="GridLayout">
		<form id="Form1" method="post" runat="server">
			<asp:ListBox id="ListBox1" runat="server"
				Width="136px" Height="248px">
				<asp:ListItem Value="aa">aa</asp:ListItem>
				<asp:ListItem Value="pp">pp</asp:ListItem>
				<asp:ListItem Value="oo">oo</asp:ListItem>
				<asp:ListItem Value="ii">ii</asp:ListItem>
				<asp:ListItem Value="uu">uu</asp:ListItem>
				<asp:ListItem Value="yy">yy</asp:ListItem>
				<asp:ListItem Value="tt">tt</asp:ListItem>
				<asp:ListItem Value="rr">rr</asp:ListItem>
				<asp:ListItem Value="ee">ee</asp:ListItem>
				<asp:ListItem Value="ww">ww</asp:ListItem>
				<asp:ListItem Value="qq">qq</asp:ListItem>
			</asp:ListBox>
			<INPUT onclick="togreen()" type="button" value="3 to green">
			<script language="javascript">
			<! --
 
			document.getElementById('<%=ListBox1.ClientID%>')[ 5 ].style.color='red'
			// -->
 
			</script>
		</form>
	</body>
</HTML>

у меня все работает
...
Рейтинг: 0 / 0
06.05.2004, 13:31
    #32509033
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 Павел Воронцов
Вот так ответ!
У меня в связи с таким ответом куча дополнительных вопросов:
1. Нельзя ли обойтись без имени формы.
2. Куда всунуть имя "Listbox4.Items(5)".
3. Почему наименование цвета повторяется несколько раз.
Короче спасибо, конечно, но я не понял ничего.

...
Рейтинг: 0 / 0
06.05.2004, 13:38
    #32509057
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 profil
У тебя работает? Блин, а у меня - нет.
А у тебя браузер какой?
У меня IE 6.0
...
Рейтинг: 0 / 0
06.05.2004, 13:47
    #32509079
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
я проверил в IE 6.0 и в Firefox'е - все нормально. Сейчас может куда-нибудь выложу, для наглядности. Подожи...
...
Рейтинг: 0 / 0
06.05.2004, 13:55
    #32509105
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
...
Рейтинг: 0 / 0
06.05.2004, 14:05
    #32509133
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 profil
Я вроде начинаю понимать.
Смотри, я добавил твой джаваскрипт на свойство кнопки "onclick".
Дальше нажимаю кнопку и тут же цвет элемента меняется на красный!!!
Но когда сервер возвращает отклик, а это происходит быстро - доли секунды - элемент опять красится в чёрный.
Попробовал вставить джаваскрипт в операторе:
Response.Write("<SCRIPT LANGUAGE='JavaScript'> document.getElementById('<%=ListBox1.ClientID%>')[1].style.color='red' </SCRIPT>")
А этот оператор воткнул в процедуру Button5_Click.
Дальше вот что получается:
При нажатии на кнопку Button5_Click программа выдаёт ошибку джаваскрипта: объект, очевидно 'Listbox1' не найден. Видимо к моменту выполнения оператора Response.Write сервер ещё не сформировал объект Listbox1.
И что с этим делать? может заменить серверный элемент управления Button5 на простой?
...
Рейтинг: 0 / 0
06.05.2004, 14:20
    #32509174
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
если тебе надо повесить на серверную кнопку клиентский скрипт, то делай:
Код: plaintext
Button5.Attributes.Add("onclick","togreen()");
или
Код: plaintext
Button5.Attributes.Add("onclick","document.getElementById('"+ ListBox1.ClientID +"')[5].style.color='red'");
...
Рейтинг: 0 / 0
06.05.2004, 14:25
    #32509189
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
что бы зарегистрировать скрипт используй конструкцию типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
string script = "<script language='JavaScript'>\n";
script += "<!--\n";
script += " function togreen(){document.getElementById('<%=ListBox1.ClientID%>')[3].style.color='green'	}\n";
script += "-->\n";
script += "</script>\n";
if (!Page.IsStartupScriptRegistered("toGreenHandle")) 
	Page.RegisterStartupScript("toGreenHandle", script); 
...
Рейтинг: 0 / 0
06.05.2004, 14:25
    #32509190
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
а для элемента 'Listbox1' и name и id заданы в 'Listbox1'?
...
Рейтинг: 0 / 0
06.05.2004, 14:50
    #32509241
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 hDrummer :
Свойства Name и id я нашёл только для клиентской кнопки "HTML". Я их оставил пустыми, так как способ profil не подразумевал вызов этого элемента управления из кода VB.NET (или J#.NET или C#.NET).
2 Вся честная компания:
Заменив серверную кнопку на клиентскую HTML и добавив свойство onclick по способу profil прямо в HTML-отображение файла ASPX, у меня всё заработало.
2 profil
Способ на серверной кнопке ещё опробовать не успел. Сейчас попробую.
Спасибо!!!
...
Рейтинг: 0 / 0
06.05.2004, 15:22
    #32509320
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 profil:
C серверной кнопкой Web Forms не получается.
Испробовал два способа:
Button5.Attributes("onclick") = "javascript:ColorListBox()"
Button5.Attributes.Add("onclick", "ColorListBox()")
Функцию ColorListBox я зарегистрировал своим способом, вставив её в ASPX-HTML между <HEAD> и </HEAD>.
Зарегистрировать функцию твоим способом через Page.Register... у меня не получилось, так как у объекта "Page" не оказалось дочернего объекта "RegisterStartupScript()" и не оказалось дочернего объекта "IsStartupScriptRegistered". Может не оказалось из-за того, что я использую VB.NET
Но я посмотрел в списке свойств/методов, выскакивающих при наборе Page.
и ничего похожего там нет. Возможно, надо библиотеку какую-то декларировать...
Короче, всё работает, но не так:
1. При нажатии на серверную кнопку видно, что на долю секунды меняется цвет
2. Потом когда сервер возвращает отклик, цвет как назло восстанавливается на чёрный.
Надо как-то заставить сервер возвращать нужный цвет. Только как?

...
Рейтинг: 0 / 0
06.05.2004, 15:32
    #32509340
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
приведи код, т.к. вся инфнормация есть, все должно работать.

Max ProЗарегистрировать функцию твоим способом через Page.Register... у меня не получилось, так как у объекта "Page" не оказалось дочернего объекта "RegisterStartupScript()" и не оказалось дочернего объекта "IsStartupScriptRegistered". Может не оказалось из-за того, что я использую VB.NET
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<html>
  <head>
     <script language="VB" runat="server">
    Sub Page_Load( sender as Object,e as EventArgs) 
         
       'Form the script that is to be registered at client side.
        Dim scriptString as String = "<script language=JavaScript> function DoClick() {"
        scriptString += "myForm.show.value='Welcome to Microsoft .NET'}<"
        scriptString += "/"
        scriptString += "script>"
      
            If(Not IsClientScriptBlockRegistered("clientScript"))
        RegisterClientScriptBlock("clientScript", scriptString)
        End If
     End Sub
     </script>
  </head>
  <body topmargin="20" leftmargin="10">
     <form id="myForm" runat="server">
        <input type="text" id="show" style="width= 200 ">
      <input type="button" value="ClickMe" onclick="DoClick()">
     </form>
  </body>
</html>
это пример из мсдн
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfSystemWebUIPageClassRegisterClientScriptBlockTopic.htm
...
Рейтинг: 0 / 0
06.05.2004, 16:41
    #32509524
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 profil:
Ну этот код из MSDN работает (я правда ошибки орфографические там исправил (в конструкции If-Then-Endif)).
Но, profil, вопрос с серверной кнопкой так и не решён: сервер даёт отклик, сводящий на нет весь джаваскрипт.
Надо бы заставить работать твой 1-й способ:
ListBox1.Items(1).Attributes.Add("style", "color:red")
То есть вставить красящий атрибут в отклик сервера.
Но что-то он не срабатывает.
Или как-то надо вставить джаваскрипт в отклик сервера. Только как?
Оператор Response.Wright("HTML") вставляет HTML (в том числе и джаваскрипт) в начало отклика, когда ещё нет никаких объектов.
Как бы вставить скрипт в конец отклика?
P.S. Я наверно тебя сегодня сильно отвлёк, но дело стоящее.
...
Рейтинг: 0 / 0
06.05.2004, 16:49
    #32509554
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Может тебе сделать для ЛистБокса EnableViewState = true ??
...
Рейтинг: 0 / 0
06.05.2004, 17:31
    #32509651
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
To: profil
Это свойство у меня по умолчанию=true.
Пробовал менять на false - не помогает.
Кстати твой способ декларирования джаваскрипт-функции приводит к ошибке. Эта функция почему-то такое впечатление внедряется о отклик сервера ДО МОМЕНТА декларирования ListBox. Соответственно объект не найден.
Вот вкладываю картинку внизу "Приложить файл" и здесь текст выгружаю:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm6</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript">function ColorListBox(){document.getElementById('ListBox1')[1].style.color='red'}</script>
<script language="javascript">function OpenDialog(sStr){alert(sStr);}</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="Form1" method="post" action="WebForm6.aspx" id="Form1">
<input type="hidden" name="__VIEWSTATE" value="dDwtMTM2NzUyNjAwO3Q8O2w8aTwwPjs+O2w8dDw7bDxpPDE+O2k8OD47aTwxMj47PjtsPHQ8cDw7cDxsPG9uY2xpY2s7PjtsPGphdmFzY3JpcHQ6IEJ1dHRvbjEuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOz4+Pjs7Pjt0PHQ8O3Q8aTwzPjtAPDAwOzAxOzAyOz47QDwwMDswMTswMjs+Pjs+Ozs+O3Q8cDw7cDxsPG9uY2xpY2s7PjtsPENvbG9yTEIoKTs+Pj47Oz47Pj47Pj47PmqQ/zz7jSDknXGBOhF2YjKKRLEt" />
<script language='javascript'>function ColorLB(){document.getElementById('<%=ListBox1.ClientID%>')[1].style.color='red'}</script>


<input type="submit" name="Button1" value="Button" id="Button1" onclick="javascript: Button1.style.visibility = 'hidden'" style="height:80px;width:160px;Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 48px" /><a id="HyperLink1" href="http://prohorovma/mskserver/bd/xls/laser.wav" style="height:32px;width:128px;Z-INDEX: 103; LEFT: 200px; POSITION: absolute; TOP: 208px">HyperLink</a><input type="submit" name="Button2" value="Button" id="Button2" style="height:48px;width:88px;Z-INDEX: 104; LEFT: 464px; POSITION: absolute; TOP: 152px" /><span id="Label2" style="height:48px;width:152px;Z-INDEX: 105; LEFT: 216px; POSITION: absolute; TOP: 256px">Label</span><input type="submit" name="Button3" value="Button" id="Button3" style="height:40px;width:64px;Z-INDEX: 106; LEFT: 440px; POSITION: absolute; TOP: 48px" /><table id="Table1" border="0" style="height:64px;width:88px;Z-INDEX: 107; LEFT: 464px; POSITION: absolute; TOP: 240px">

</table><select name="ListBox1" size="4" id="ListBox1" style="height:128px;width:112px;Z-INDEX: 108; LEFT: 600px; POSITION: absolute; TOP: 136px">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>

</select><input type="submit" name="Button4" value="Заполнить" id="Button4" style="width:112px;Z-INDEX: 109; LEFT: 600px; POSITION: absolute; TOP: 104px" /><span id="Label3" style="height:24px;width:112px;Z-INDEX: 110; LEFT: 600px; POSITION: absolute; TOP: 304px">Цвет старый</span><INPUT style="Z-INDEX: 111; LEFT: 600px; WIDTH: 112px; POSITION: absolute; TOP: 264px; HEIGHT: 24px"
onclick="ColorListBox()" type="button" value="Раскрасить">
<input type="submit" name="Button5" value="Раскрасить с сервера" id="Button5" onclick="ColorLB()" style="width:145px;Z-INDEX: 112; LEFT: 568px; POSITION: absolute; TOP: 328px" /></form>
</body>
</HTML>


...
Рейтинг: 0 / 0
06.05.2004, 17:38
    #32509668
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Вот так сделан RenderContents в классе ListBox в Mono:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
		protected override void RenderContents (HtmlTextWriter writer)
		{
			bool isMultAllowed = (SelectionMode == ListSelectionMode.Multiple);
			bool selMade = false;
			foreach (ListItem current in Items){
				writer.WriteBeginTag ("option");
				if (current.Selected){
					if (!isMultAllowed && selMade)
						throw new HttpException ("Cannot_MultiSelect_In_Single_Mode");
					selMade = true;
					writer.WriteAttribute ("selected", "selected");
				}
				writer.WriteAttribute ("value", current.Value, true);
				writer.Write ('>');
				writer.Write (HttpUtility.HtmlEncode (current.Text));
				writer.WriteEndTag ("option");
				writer.WriteLine ();
			}
		}

Напиши свой контрол, наследуйся от ListBox, и перекрой в нем RenderContents так, чтобы чтобы все необходимые атрибуты выводились на writer.
И все.
...
Рейтинг: 0 / 0
06.05.2004, 17:57
    #32509711
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
To: Ihor Bobak
Легко сказать - напиши свой контрол. Я ни разу не пробовал.
Нельзя ли внесли улучшающие исправления в сам класс Listbox?
Если можно, то как, где он лежит, этот класс?
Я думаю, он откомпилирован в dll какой-нибудь, хрен туда подкопаешься.
Хорошо бы всё-таки докопаться до истины с наименьшими потерями крови!
Как внедрить джаваскрипт в конец HTML-отклика сервера?
...
Рейтинг: 0 / 0
06.05.2004, 21:18
    #32509873
Ihor Bobak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Стоит попробовать - см. сюда:
http://www.ibdesk.com/aspnet/servercontrols.rar

Еще есть такой проэкт "Mono" - .NET для Линукса. Очень помогает читать код контролов Mono - с большой вероятностью код ASP.NET будет таким же. Метод ListBox.RenderContents, который я привел выше, взят именно из Mono.

Лично я подозреваю, что Mono - это либо украденный .NET, либо восстановленный из дизассемблированного кода .NET, так как его модель классов и их поведение - точная копия .NET. Но это уже другая тема. Короче, разобраться как писать контролы ОЧЕНЬ помогает.

См. http://www.go-mono.com
...
Рейтинг: 0 / 0
07.05.2004, 09:21
    #32510091
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
2 Ihor Bobak
Первая ссылка не открывается - невозможно отобразить, попробуйте позже.
Вторая ссылка открыла Mono.
Я ковырнул ASP.NET, там просто текст.
Тогда залез на Download.
Нашёл Mono Class Libraries, обрадовался, скачал 8 с лишним мегабайт. Какого же было моё удивление, что скачанный файл оказался с расширением .gz
Открыть этот по-видимому архив я не смог, пришлось стереть его.
Ладно, свой контрол я напишу как-нибудь с помошью книжки.
А пока джаваскрипт изучить придётся.
...
Рейтинг: 0 / 0
07.05.2004, 09:38
    #32510109
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить цвет строки в ListBox ?
Max Pro, я там в скрипте ошибочку бопустил, и, насколько я понимаю, ты ее к себе в код перенес ;)
д.б.:
string script = "<script language='JavaScript'>\n";
script += "<!--\n";
script += " function togreen(){document.getElementById ('"+ ListBox1.ClientID +"') [3].style.color='green' }\n";
script += "-->\n";
script += "</script>\n";
if (!Page.IsStartupScriptRegistered("toGreenHandle"))
Page.RegisterStartupScript("toGreenHandle", script);
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как изменить цвет строки в ListBox ? / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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