Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

Max Pro

 
Название:

Заплатка для ASPxComboBox (элемент управления из библиотеки Developer Express, диапазон версий 7.2.x.x ... 7.3.x.x)

Дата: 08 February 2008
Описание: Данный патч, написанный на Яваскрипте, решает проблему потери SelectedIndex элементов, содержащих теги Html в своём тексте. 
  Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения следующую строку: [CODEPOST ID=226]Заплатка для ASPxComboBox (элемент управления из библиотеки Developer Express, диапазон версий 7.2.x.x ... 7.3.x.x)[/CODEPOST]
Оценка: Проголосовало 2 посетителей, средняя оценка 1.00
Оценить:
  1 Эпиграф.
  2 
  3 Любите Яваскрипт - и он полюбит Вас (Андрей Алейкин - малоизвестный учёный).
  4 
  5 Предисловие.
  6 
  7 Всем известно, что в библиотеке DevEx ошибок столько, что хоть топор вешай.
  8 К сожалению, пытаться решить их методом тыка - только время терять.
  9 Представляю Вашему вниманию научный способ, основанный на описанном мною ранее
 10 взломе методом полного анализа объекта. Только Яваскрипт способен помочь
 11 программисту ASP.NET в безвыходных ситуациях.
 12 
 13 Симптомы.
 14 
 15 После задания 
 16 ASPxComboBox1.EncodeHtml = true; 
 17 вместо текста можно писать Html.
 18 Например,
 19 ASPxComboBox1.Items.Add("<font color='red'>Остальные</font>", 4);
 20 И обозреватель действительно красит тему в красный цвет.
 21 Но беда в том, что при выделении такой темы, теряется SelectedIndex.
 22 
 23 Решение (На примере ASPxComboBox9).
 24 
 25 1. В директиву Page добавляем validateRequest="false".
 26 2. Пишем функцию на Яваскрипте.
 27 		// Функция покраски тем в Combo9
 28 		function fColorCombo9()
 29 		{
 30 			//#region var
 31 			var iCombo9=0;
 32 			var iMaxCombo9Begin=0;
 33 			var iMaxCombo9=0;
 34 			var iSelectedIndexCombo9=0;
 35 			var sArrayItemsValueCombo9;
 36 			var sArrayItemsTextCombo9;
 37 			var sArrayItemsImageUrlCombo9;
 38 			//#endregion var
 39 			//#region ini
 40 			iMaxCombo9Begin=4;//максимальный номер элемента как должно быть
 41 			iMaxCombo9=ASPxComboBox9.GetItemCount()-1;//максимальный номер элемента
 42 			sArrayItemsValueCombo9=new Array(iMaxCombo9Begin+1);//массив itemsValue
 43 			sArrayItemsTextCombo9=new Array(iMaxCombo9Begin+1);//массив itemsText
 44 			sArrayItemsImageUrlCombo9=new Array(iMaxCombo9Begin+1);//массив ItemsImageUrl
 45 			for(iCombo9=0;iCombo9<=iMaxCombo9Begin;iCombo9++)
 46 			{
 47 				sArrayItemsValueCombo9[iCombo9]=ASPxComboBox9.GetItem(iCombo9).value;//наполнение массива itemsValue
 48 				sArrayItemsTextCombo9[iCombo9]=ASPxComboBox9.GetItem(iCombo9).text;//наполнение массива itemsText
 49 				sArrayItemsImageUrlCombo9[iCombo9]=ASPxComboBox9.GetItem(iCombo9).imageUrl;//наполнение массива ItemsImageUrl
 50 			}
 51 			iSelectedIndexCombo9=ASPxComboBox9.GetSelectedIndex();//выделенный ключ
 52 			//#endregion ini
 53 			//удаление всех
 54 			for(var iCombo9=iMaxCombo9;iCombo9>=0;iCombo9--)ASPxComboBox9.RemoveItem(iCombo9);
 55 			//добавление всех
 56 			for(var iCombo9=0;iCombo9<=iMaxCombo9Begin;iCombo9++)
 57 			{
 58 				switch(iCombo9)
 59 				{
 60 					case 2:
 61 						ASPxComboBox9.AddItem('<font color="darkViolet">'+sArrayItemsTextCombo9[iCombo9]+'</font>',sArrayItemsValueCombo9[iCombo9],sArrayItemsImageUrlCombo9[iCombo9]);
 62 					break;
 63 					case 3:
 64 						ASPxComboBox9.AddItem('<font color="darkGoldenrod">'+sArrayItemsTextCombo9[iCombo9]+'</font>',sArrayItemsValueCombo9[iCombo9],sArrayItemsImageUrlCombo9[iCombo9]);
 65 					break;
 66 					default:
 67 						ASPxComboBox9.AddItem(sArrayItemsTextCombo9[iCombo9],sArrayItemsValueCombo9[iCombo9],sArrayItemsImageUrlCombo9[iCombo9]);
 68 					break;
 69 				}
 70 			}
 71 			ASPxComboBox9.SetSelectedIndex(iSelectedIndexCombo9);
 72 		}
 73 Обратите внимание на строку:
 74 			iMaxCombo9Begin=4;//максимальный номер элемента как должно быть
 75 К сожалению, надо быть в курсе истинного числа элементов, так как их число
 76 может возрасти после постбека (по вине DevExp).
 77 3. Добавляем fColorCombo9() в функцию fLoad().
 78 		function fLoad()
 79 		{
 80 			if(ASPxComboBox9)fColorCombo9();
 81 			...
 82 		}
 83 4. Проверяем есть ли привязка к body.
 84 <body onload="fLoad()">
 85 5. В раздельном коде нельзя применять теги Html, например вместо
 86 	ASPxComboBox1.Items.Add("<font color='red'>Остальные</font>", 4);
 87 надо написать
 88 	ASPxComboBox1.Items.Add("Остальные", 4);
 89 
 90 Ну вот и всё. Как всегда желаю приятной работы.
 91 
Вернуться к списку исходников в категории Общие вопросы программирования на ASP.NET
 
Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта