|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
Доступ к ASPxComboBox из Яваскрипта: ломаем дальше методом полного анализа объекта (элемент управления из библиотеки Developer Express, диапазон версий 7.2.x.x ... 7.3.x.x) |
|
Дата:
|
11 January 2008 |
|
Описание: |
Предыдущий быстрый способ взлома хотя и работает, но некрасив и малофункционален. Поэтому я приглашаю тусовку не останавливаться на достигнутом и попытаться доломать проклятых буржуев до конца. В этом нам поможет так называемый метод полного анализа объекта - Яваскрипт позволяет разложить любой объект по косточкам - единственное надо применять его точечно чтобы не утонуть в море информации. |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=222]Доступ к ASPxComboBox из Яваскрипта: ломаем дальше методом полного анализа объекта (элемент управления из библиотеки Developer Express, диапазон версий 7.2.x.x ... 7.3.x.x)[/CODEPOST] |
| Оценка: |
Проголосовало 7 посетителей, средняя оценка 2.14 |
| Оценить: |
|
1 В чём состоит способ полного анализа объекта? Это цикл for(var name in Объект).
2
3 1. Создаём обработчик события SelectedIndexChanged:
4
5 <dxe:ASPxComboBox ID="ASPxComboBox1" runat="server" CssFilePath="~/App_Themes/Glass/{0}/styles.css"
6 CssPostfix="Glass" ImageFolder="~/App_Themes/Glass/{0}/" Width="100%" ValueType="System.String">
7 <ValidationSettings>
8 <ErrorFrameStyle ImageSpacing="4px">
9 <ErrorTextPaddings PaddingLeft="4px" />
10 </ErrorFrameStyle>
11 <ErrorImage Height="14px" Url="~/App_Themes/Glass/Editors/edtError.png" Width="14px" />
12 </ValidationSettings>
13 <ClientSideEvents SelectedIndexChanged="function(s, e)
14 {
15 var names='';
16 var i=0;
17 for(var name in s)
18 {
19 i++;
20 names+='='+i+'='+'\n'+name+'='+s[name]+'\n';
21 }
22 document.getElementById('TextBox1').innerHTML=names;
23 }" />
24 </dxe:ASPxComboBox>
25
26 Ну и зацениваем содержимое TextBox1. Там, как Вы догадываетесь, много интересного, но самое интересное вот это:
27
28 name=ASPxComboBox1
29
30 А это означает, что в любом месте Яваскрипта можно обращаться к комбобоксу напрямую по имени ASPxComboBox1.
31
32 2. Продолжаем взлом. Добавляем в обработчик первоначальной загрузки цикл for(var name in ASPxComboBox1):
33
34 // Функция первоначальной загрузки
35 function fLoad()
36 {
37 ...
38 var names='';
39 var i=0;
40 for(var name in ASPxComboBox1)
41 {
42 i++;
43 names+='='+i+'='+'\n'+name+'='+ASPxComboBox1[name]+'\n';
44 }
45 document.getElementById('TextBox1').innerHTML=names;
46 ...
47 }
48
49 Сравниваем объекты s и ASPxComboBox1. Почти совпадают. У s 274 подобъекта, а у ASPxComboBox1 - 271.
50
51 3. Анализируем, проверяем на практике и делаем выводы.
52
53 Соответствие DropDownList -> ASPxComboBox
54 document.getElementById("DropDownList1") соответствует ASPxComboBox1
55 .selectedIndex соответствует .GetSelectedIndex или .GetListBoxControl().GetSelectedIndexInternal()
56 .options соответствует .GetItem()
57 .options[i].value соответствует .GetItem(i).value
58 .options[i].text соответствует .GetItem(i).text
59 Обратите внимание на круглые скобки. Это не опечатка - Девэксп решил заново изобрести велосипед и запендюрил функции вместо массивов - ничего не поделаешь.
60
61 4. Кроме гетеров имеются соответствующие сетеры. Полный список подобъектов, выводимый методом полного анализа for(var name in ASPxComboBox1), приводится ниже:
62
63 =1=
64 constructor=function () {
65 if (ret.preparing) {
66 return delete ret.preparing;
67 }
68 if (ret.constr) {
69 this.constructor = ret;
70 ret.constr.apply(this, arguments);
71 }
72 }
73 =2=
74 name=ASPxComboBox1
75 =3=
76 uniqueID=ASPxComboBox1
77 =4=
78 autoPostBack=false
79 =5=
80 callBack=function (arg) {
81 WebForm_DoCallback("ASPxComboBox1", arg, aspxCallback, "ASPxComboBox1", aspxCallbackError, true);
82 }
83 =6=
84 allowMultipleCallbacks=false
85 =7=
86 requestCount=0
87 =8=
88 isInitialized=false
89 =9=
90 leadingAfterInitCall=false
91 =10=
92 sizeCorrectedOnce=false
93 =11=
94 serverEvents=
95 =12=
96 mainElement=null
97 =13=
98 Init=[object Object]
99 =14=
100 BeginCallback=[object Object]
101 =15=
102 EndCallback=[object Object]
103 =16=
104 inputElement=null
105 =17=
106 convertEmptyStringToNull=true
107 =18=
108 widthCorrectionRequired=false
109 =19=
110 heightCorrectionRequired=false
111 =20=
112 initialErrorText=
113 =21=
114 causesValidation=false
115 =22=
116 validationGroup=
117 =23=
118 sendPostBackWithValidation=null
119 =24=
120 customValidationEnabled=false
121 =25=
122 validationPatterns=null
123 =26=
124 setFocusOnError=false
125 =27=
126 errorDisplayMode=it
127 =28=
128 errorText=
129 =29=
130 isValid=true
131 =30=
132 errorImageIsAssigned=false
133 =31=
134 GotFocus=[object Object]
135 =32=
136 LostFocus=[object Object]
137 =33=
138 Validation=[object Object]
139 =34=
140 ValueChanged=[object Object]
141 =35=
142 KeyDown=[object Object]
143 =36=
144 KeyPress=[object Object]
145 =37=
146 KeyUp=[object Object]
147 =38=
148 TextChanged=[object Object]
149 =39=
150 ButtonClick=[object Object]
151 =40=
152 DropDown=[object Object]
153 =41=
154 CloseUp=[object Object]
155 =42=
156 ddHeightCache=-10000
157 =43=
158 ddWidthCache=-10000
159 =44=
160 dropDownButtonIndex=-1
161 =45=
162 droppedDown=false
163 =46=
164 lastSuccessText=
165 =47=
166 SelectedIndexChanged=[object Object]
167 =48=
168 filterTimerId=-1
169 =49=
170 lbEventLockCount=0
171 =50=
172 isCallbackMode=false
173 =51=
174 isPerformCallback=false
175 =52=
176 changeSelectAfterCallback=0
177 =53=
178 isFilterEnabled=false
179 =54=
180 isEnterLocked=false
181 =55=
182 filter=
183 =56=
184 isToolBarItem=false
185 =57=
186 isDropDownListStyle=true
187 =58=
188 dropDownHeight=
189 =59=
190 dropDownWidth=
191 =60=
192 listBox=null
193 =61=
194 lastSuccessValue=
195 =62=
196 islastSuccessValueInit=false
197 =63=
198 Initialize=function () {
199 var lb = this.GetListBoxControl();
200 if (_aspxIsExists(lb)) {
201 lb.ownerName = this.name;
202 }
203 var mainElement = this.GetMainElement();
204 var input = this.FindInputElement();
205 var ddbutton = this.GetDropDownButton();
206 if (_aspxIsExists(ddbutton)) {
207 _aspxAttachEventToElement(ddbutton, "mousemove", _aspxCBDDButtonMMove);
208 }
209 if (this.isFilterEnabled) {
210 _aspxAttachEventToElement(input, "keyup", _aspxCBKeyUp);
211 }
212 if (this.isDropDownListStyle && __aspxIE) {
213 _aspxPreventElementDragAndSelect(mainElement, true);
214 _aspxPreventElementDragAndSelect(input, true);
215 if (_aspxIsExists(ddbutton)) {
216 _aspxPreventElementDragAndSelect(ddbutton, true);
217 }
218 }
219 if (this.isToolBarItem) {
220 mainElement.unselectable = "on";
221 input.unselectable = "on";
222 input.offsetParent.unselectable = "on";
223 if (_aspxIsExists(ddbutton)) {
224 ddbutton.unselectable = "on";
225 }
226 if (_aspxIsExists(lb)) {
227 var table = lb.GetListTable();
228 for (var i = 0; i < table.rows.length; i++) {
229 for (var j = 0; j < table.rows[i].cells.length; j++) {
230 table.rows[i].cells[j].unselectable = "on";
231 }
232 }
233 }
234 }
235 this.RemoveRaisePSValidationFromListBox();
236 this.RedirectStandardValidators();
237 this.UpdateValueInput();
238 this.InitDropDownSize();
239 ASPxClientDropDownEdit.prototype.Initialize.call(this);
240 }
241 =64=
242 CorrectSize=function (checkSizeCorrectedFlag) {
243 if (checkSizeCorrectedFlag && this.sizeCorrectedOnce ||
244 !this.IsVisible()) {
245 return;
246 }
247 ASPxClientEdit.prototype.CorrectSize.call(this, checkSizeCorrectedFlag);
248 this.ddHeightCache = __aspxInvalidDimension;
249 this.ddWidthCache = __aspxInvalidDimension;
250 }
251 =65=
252 EnableStyleControllerForDDButton=function () {
253 var element = this.GetDropDownButton();
254 if (_aspxIsExists(element)) {
255 var controller = aspxGetStateController();
256 this.ReplaceElementControlStyleItem(controller.hoverItems, element, this.ddButtonHoverStyle);
257 this.ReplaceElementControlStyleItem(controller.pressedItems, element, this.ddButtonPressedStyle);
258 this.ReplaceElementControlStyleItem(controller.selectedItems, element, this.ddButtonSelectedStyle);
259 }
260 }
261 =66=
262 DisableStyleControllerForDDButton=function () {
263 var element = this.GetDropDownButton();
264 if (_aspxIsExists(element)) {
265 var controller = aspxGetStateController();
266 this.ddButtonHoverStyle = this.ReplaceElementControlStyleItem(controller.hoverItems, element, null);
267 this.ddButtonPressedStyle = this.ReplaceElementControlStyleItem(controller.pressedItems, element, null);
268 this.ddButtonSelectedStyle = this.ReplaceElementControlStyleItem(controller.selectedItems, element, null);
269 }
270 }
271 =67=
272 ReplaceElementControlStyleItem=function (items, element, newStyleItem) {
273 var styleItem = items[element.id];
274 items[element.id] = newStyleItem;
275 return styleItem;
276 }
277 =68=
278 RemoveRaisePSValidationFromListBox=function () {
279 var listBox = this.GetListBoxControl();
280 if (_aspxIsExists(listBox)) {
281 listBox.RaisePersonalStandardValidation = function () {};
282 }
283 }
284 =69=
285 RedirectStandardValidators=function () {
286 var valueInput = this.GetValueInput();
287 if (_aspxIsExistsElement(valueInput) &&
288 _aspxIsExists(valueInput.Validators)) {
289 for (var i = 0; i < valueInput.Validators.length; i++) {
290 valueInput.Validators[i].controltovalidate = valueInput.id;
291 }
292 }
293 }
294 =70=
295 DropDownButtonPush=function () {
296 if (__aspxIE || __aspxOpera) {
297 this.DropDownButtonPushCommon();
298 } else {
299 this.DropDownButtonPushMozilla();
300 }
301 }
302 =71=
303 DropDownButtonPop=function () {
304 if (__aspxIE || __aspxOpera) {
305 this.DropDownButtonPopCommon();
306 } else {
307 this.DropDownButtonPopMozilla();
308 }
309 }
310 =72=
311 DropDownButtonPushCommon=function () {
312 if (this.droppedDown) {
313 return;
314 }
315 var buttonElement = this.GetDropDownButton();
316 if (_aspxIsExists(buttonElement)) {
317 var controller = aspxGetStateController();
318 controller.SetCurrentHoverElement(null);
319 var element = controller.GetPressedElement(buttonElement);
320 if (_aspxIsExists(element)) {
321 controller.DoSetPressedState(element);
322 }
323 }
324 }
325 =73=
326 DropDownButtonPopCommon=function () {
327 if (!this.droppedDown) {
328 return;
329 }
330 var buttonElement = this.GetDropDownButton();
331 if (_aspxIsExists(buttonElement)) {
332 var controller = aspxGetStateController();
333 var element = controller.GetPressedElement(buttonElement);
334 if (_aspxIsExists(element)) {
335 controller.DoClearPressedState(element);
336 }
337 }
338 }
339 =74=
340 DropDownButtonPushMozilla=function () {
341 if (this.droppedDown) {
342 return;
343 }
344 this.DisableStyleControllerForDDButton();
345 var controller = aspxGetStateController();
346 controller.savedCurrentPressedElement = null;
347 }
348 =75=
349 DropDownButtonPopMozilla=function () {
350 if (!this.droppedDown) {
351 return;
352 }
353 this.EnableStyleControllerForDDButton();
354 var controller = aspxGetStateController();
355 var buttonElement = this.GetDropDownButton();
356 if (_aspxIsExists(buttonElement)) {
357 var element = controller.GetPressedElement(buttonElement);
358 if (_aspxIsExists(element)) {
359 controller.DoClearPressedState(element);
360 }
361 controller.currentPressedElement = null;
362 element = controller.GetHoverElement(buttonElement);
363 if (_aspxIsExists(element)) {
364 controller.SetCurrentHoverElement(element);
365 }
366 }
367 }
368 =76=
369 FindItemIndexByText=function (lb, text) {
370 if (!_aspxIsExists(lb)) {
371 return;
372 }
373 for (var i = 0; i < lb.GetItemCount(); i++) {
374 if (lb.GetItem(i).text == text) {
375 return i;
376 }
377 }
378 return -1;
379 }
380 =77=
381 GetValueInputToValidate=function () {
382 return this.GetValueInput();
383 }
384 =78=
385 GetValueInput=function () {
386 return document.getElementById(this.name + "_" + __aspxCCValueInputSuffix);
387 }
388 =79=
389 GetListBoxControl=function () {
390 if (!_aspxIsExistsElement(this.listBox)) {
391 var name = this.GetDropDownInnerControlName(__aspxListBoxNameSuffix);
392 this.listBox = aspxGetControlCollection().Get(name);
393 }
394 return this.listBox;
395 }
396 =80=
397 GetListBoxScrollDivElement=function () {
398 return this.GetListBoxControl().GetScrollDivElement();
399 }
400 =81=
401 GetDropDownHeight=function () {
402 return this.ddHeightCache != __aspxInvalidDimension ? this.ddHeightCache : this.InitListBoxHeight();
403 }
404 =82=
405 GetDropDownWidth=function () {
406 return this.ddWidthCache != __aspxInvalidDimension ? this.ddWidthCache : this.InitListBoxWidth();
407 }
408 =83=
409 SetText=function (text) {
410 var lb = this.GetListBoxControl();
411 var index = this.FindItemIndexByText(lb, text);
412 this.SelectIndex(index);
413 this.SetTextInternal(text);
414 this.lastSuccessText = text;
415 this.lastSuccessValue = index >= 0 ? lb.GetValue() : text;
416 this.islastSuccessValueInit = true;
417 }
418 =84=
419 GetValue=function () {
420 return this.islastSuccessValueInit ? this.lastSuccessValue : this.GetValueInternal();
421 }
422 =85=
423 GetValueInternal=function () {
424 var text = ASPxClientDropDownEdit.prototype.GetValue.call(this);
425 var lb = this.GetListBoxControl();
426 if (_aspxIsExists(lb)) {
427 var index = this.FindItemIndexByText(lb, text);
428 lb.SelectIndex(index, false);
429 if (index != -1) {
430 return lb.GetValue();
431 }
432 }
433 return text;
434 }
435 =86=
436 SetValue=function (value) {
437 var lb = this.GetListBoxControl();
438 lb.SetValue(value);
439 var item = lb.GetSelectedItem();
440 var text = _aspxIsExists(item) ? item.text : value;
441 this.SetTextInternal(text);
442 this.lastSuccessText = text;
443 this.lastSuccessValue = item != null ? item.value : text;
444 this.islastSuccessValueInit = true;
445 this.UpdateValueInput();
446 }
447 =87=
448 UpdateValueInput=function () {
449 var input = this.GetValueInput();
450 var value = this.GetValue();
451 input.value = value != null ? value : "";
452 }
453 =88=
454 CollectionChanged=function () {
455 if (this.GetListBoxControl().APILockCount == 0) {
456 this.InitDropDownSize();
457 }
458 }
459 =89=
460 InitDropDownSize=function () {
461 var pc = this.GetPopupControl();
462 if (_aspxIsExists(pc) && this.IsDisplayed()) {
463 var pcwElement = pc.GetWindowElement(-1);
464 if (_aspxIsExistsElement(pcwElement)) {
465 var isPcwDisplayad = _aspxGetElementDisplay(pcwElement);
466 if (!isPcwDisplayad) {
467 pc.SetWindowDisplay(-1, true);
468 }
469 this.ddHeightCache = this.InitListBoxHeight();
470 this.ddWidthCache = this.InitListBoxWidth();
471 pc.SetSize(this.ddWidthCache, this.ddHeightCache);
472 if (!isPcwDisplayad) {
473 pc.SetWindowDisplay(-1, false);
474 }
475 }
476 }
477 }
478 =90=
479 InitListBoxHeight=function () {
480 var lbScrollDiv = this.GetListBoxScrollDivElement();
481 var height = this.dropDownHeight;
482 var lb = this.GetListBoxControl();
483 var lbHeight = 0;
484 if (height == "") {
485 var listHeight = lb.GetListTableHeight();
486 var count = lb.GetItemCount();
487 if (count > 7) {
488 height = listHeight / count * 7 + "px";
489 } else {
490 height = count == 0 ? "0px" : listHeight + "px";
491 }
492 lbScrollDiv.style.height = height;
493 lbHeight = lbScrollDiv.offsetHeight;
494 } else {
495 var lbMainElement = lb.GetMainElement();
496 lbMainElement.style.height = "0px";
497 lbScrollDiv.style.height = "0px";
498 lbMainElement.style.height = height;
499 var trueLbOffsetHeight = lbMainElement.offsetHeight;
500 var trueLbClientHeight = lbMainElement.clientHeight;
501 lbScrollDiv.style.height = lbMainElement.clientHeight + "px";
502 lbHeightCorrection = lbMainElement.offsetHeight - trueLbOffsetHeight;
503 lbScrollDiv.style.height = trueLbClientHeight - lbHeightCorrection + "px";
504 lbHeight = lbMainElement.offsetHeight;
505 }
506 lb.InitializePageSize();
507 return lbHeight;
508 }
509 =91=
510 InitListBoxWidth=function () {
511 var mainElement = this.GetMainElement();
512 var lb = this.GetListBoxControl();
513 var lbMainElement = lb.GetMainElement();
514 var lbScrollDiv = this.GetListBoxScrollDivElement();
515 var lbTable = lb.GetListTable();
516 lbMainElement.style.width = "";
517 lbScrollDiv.style.width = "100%";
518 if (this.dropDownWidth != "") {
519 lbMainElement.style.width = this.dropDownWidth;
520 lbScrollDiv.style.width = lbMainElement.clientWidth + "px";
521 var difference = lbTable.offsetWidth - lbScrollDiv.clientWidth;
522 if (!__aspxIE && difference > 0) {
523 lbMainElement.style.width = lbMainElement.offsetWidth + difference + "px";
524 lbScrollDiv.style.width = lbMainElement.clientWidth + "px";
525 }
526 } else {
527 var pc = this.GetPopupControl();
528 var width = lbTable.offsetWidth;
529 var scrollWidth = lb.GetVerticalScrollBarWidth();
530 var isBrowserPutScrollOnContent = !__aspxIE || __aspxIE55;
531 var isBrowserAbleAnimScroll = !__aspxMozilla || __aspxFirefox || !pc.enableAnimation;
532 if (isBrowserPutScrollOnContent && isBrowserAbleAnimScroll) {
533 width += scrollWidth;
534 }
535 lbScrollDiv.style.width = width + "px";
536 if (__aspxFirefox &&
537 lbMainElement.offsetWidth < lbScrollDiv.offsetWidth) {
538 lbMainElement.style.width = "0%";
539 }
540 var widthDifference = mainElement.offsetWidth - lbMainElement.offsetWidth;
541 if (widthDifference > 0) {
542 lbScrollDiv.style.width = width + widthDifference + "px";
543 var twoBorderSize = lbMainElement.offsetWidth - lbMainElement.clientWidth;
544 lbMainElement.style.width = width + widthDifference + twoBorderSize + "px";
545 }
546 }
547 return lbScrollDiv.offsetWidth;
548 }
549 =92=
550 SelectIndex=function (index) {
551 var lb = this.GetListBoxControl();
552 var isSelectionChanged = lb.SelectIndex(index, false);
553 var item = lb.GetSelectedItem();
554 var text = item != null ? item.text : "";
555 if (isSelectionChanged) {
556 this.SetTextInternal(text);
557 this.lastSuccessText = text;
558 this.lastSuccessValue = item != null ? item.value : text;
559 this.islastSuccessValueInit = true;
560 }
561 return isSelectionChanged;
562 }
563 =93=
564 SelectIndexSilent=function (lb, index) {
565 this.lbEventLockCount++;
566 lb.SelectIndexInternal(index);
567 this.lbEventLockCount--;
568 }
569 =94=
570 SelectInputText=function () {
571 var input = this.GetInputElement();
572 _aspxSetInputSelection(input, 0, input.value.length);
573 }
574 =95=
575 ShowDropDownArea=function (isRaiseEvent) {
576 var lb = this.GetListBoxControl();
577 if (!_aspxIsExists(lb) || lb.GetItemCount() == 0) {
578 return;
579 }
580 var pc = this.GetPopupControl();
581 ASPxClientDropDownEdit.prototype.ShowDropDownArea.call(this, isRaiseEvent);
582 if (__aspxMozilla && pc.enableAnimation) {
583 this.DisableLBDivOverflow();
584 window.setTimeout(_aspxCBMozillaOverflowOn, pc.animationMaxDelay / 2, this.name);
585 }
586 var text = ASPxClientDropDownEdit.prototype.GetValue.call(this);
587 var lbItem = lb.GetSelectedItem();
588 var lbText = lbItem != null ? lbItem.text : "";
589 if (text != lbText && text != null && lbText != "") {
590 var newSelectedIndex = this.FindItemIndexByText(lb, text);
591 lb.SelectIndex(newSelectedIndex, false);
592 }
593 lb.EnsureSelectedItemVisible();
594 lb.CallbackSpaceInit();
595 }
596 =96=
597 HideDropDownArea=function (isRaiseEvent) {
598 this.DropDownButtonPop();
599 this.FilteringStop();
600 ASPxClientDropDownEdit.prototype.HideDropDownArea.call(this, isRaiseEvent);
601 }
602 =97=
603 EnableLBDivOverflow=function () {
604 var divElement = this.GetListBoxScrollDivElement();
605 divElement.style.overflow = "auto";
606 }
607 =98=
608 DisableLBDivOverflow=function () {
609 var divElement = this.GetListBoxScrollDivElement();
610 divElement.style.overflow = "hidden";
611 }
612 =99=
613 OnFiltering=function (evt) {
614 if (this.isFilterEnabled &&
615 evt.keyCode != 16 && !evt.ctrlKey && !evt.altKey) {
616 _aspxClearTimer(this.filterTimerId);
617 var input = this.FindInputElement();
618 var newFilter = input.value.toLowerCase();
619 if (evt.keyCode == 8 &&
620 _aspxHasInputSelection(input) && newFilter == this.filter) {
621 this.FilteringBackspace(false);
622 } else if (this.IsFilterKeycode(evt.keyCode)) {
623 this.FilterByTimer();
624 }
625 }
626 }
627 =100=
628 FilterByTimer=function () {
629 this.isEnterLocked = true;
630 this.filterTimerId = _aspxSetTimeout("_aspxCBFilterByTimer('" + this.name + "')", 100);
631 }
632 =101=
633 EnshureShowDropDownArea=function () {
634 if (!this.droppedDown) {
635 this.ShowDropDownArea(true);
636 }
637 }
638 =102=
639 Filtering=function () {
640 var input = this.FindInputElement();
641 var newFilter = input.value.toLowerCase();
642 if (this.filter != newFilter || this.isDropDownListStyle) {
643 this.filter = newFilter;
644 this.EnshureShowDropDownArea();
645 if (this.isCallbackMode) {
646 this.FilteringOnServer();
647 } else {
648 this.FilteringOnClient(input);
649 }
650 } else {
651 this.isEnterLocked = false;
652 }
653 }
654 =103=
655 FilteringBackspace=function (isBefore) {
656 if (this.isFilterEnabled) {
657 var input = this.FindInputElement();
658 if (!isBefore) {
659 var text = input.value;
660 var newInput = text.substring(0, text.length - 1);
661 input.value = newInput;
662 this.FilterByTimer();
663 }
664 return _aspxHasInputSelection(input);
665 }
666 return false;
667 }
668 =104=
669 GetCallbackArguments=function () {
670 var args = this.GetCallbackArgumentsChild();
671 if (this.isCallbackMode) {
672 args += this.GetCallbackArgumentsInternal();
673 }
674 return args;
675 }
676 =105=
677 GetCallbackArgumentsInternal=function () {
678 var args = "";
679 if (this.filter != "") {
680 args = this.GetCallbackArgumentFilter(this.filter);
681 }
682 return args;
683 }
684 =106=
685 GetCallbackArgumentFilter=function (value) {
686 var callbackPrefix = this.isDropDownListStyle ? __aspxCorrectFilterCallbackPrefix : __aspxLoadFilteredItemsCallbackPrefix;
687 return this.FormatCallbackArg(callbackPrefix, value);
688 }
689 =107=
690 GetCallbackArgumentsChild=function () {
691 var lb = this.GetListBoxControl();
692 return lb.GetCallbackArguments();
693 }
694 =108=
695 FilteringOnServer=function () {
696 if (!this.InCallback()) {
697 this.GetListBoxControl().ClearItems();
698 this.SendCallback();
699 }
700 }
701 =109=
702 FilteringOnClient=function (input) {
703 var filter = this.filter.toLowerCase();
704 var lb = this.GetListBoxControl();
705 var listTable = lb.GetListTable();
706 var count = lb.GetItemCount();
707 var text = "";
708 var isSatisfy = false;
709 var isFirstSatisfyItemFinded = false;
710 if (this.isDropDownListStyle) {
711 var coincide = new Array(count);
712 var maxCoincide = 0;
713 for (var i = count - 1; i >= 0; i--) {
714 coincide[i] = this.GetCoincideCharCount(lb.GetItem(i).text.toLowerCase(), filter);
715 if (coincide[i] > maxCoincide) {
716 maxCoincide = coincide[i];
717 }
718 }
719 filter = filter.substr(0, maxCoincide);
720 this.GetInputElement().value = filter;
721 }
722 for (var i = 0; i < count; i++) {
723 text = lb.GetItem(i).text;
724 isSatisfy = this.isDropDownListStyle ? coincide[i] == maxCoincide : text.toLowerCase().indexOf(filter) == 0;
725 _aspxSetElementDisplay(listTable.rows[i], isSatisfy);
726 if (!isFirstSatisfyItemFinded && isSatisfy) {
727 var isTextClearing = !this.isDropDownListStyle &&
728 this.filter == "" && this.filter != text;
729 if (!isTextClearing) {
730 this.FilteringHighlightComplitedText(i, text);
731 }
732 this.SelectIndexSilent(lb, isTextClearing ? -1 : i);
733 isFirstSatisfyItemFinded = true;
734 }
735 }
736 if (this.isDropDownListStyle) {
737 this.filter = filter;
738 }
739 if (!isFirstSatisfyItemFinded) {
740 this.HideDropDownArea(true);
741 }
742 this.isEnterLocked = false;
743 }
744 =110=
745 GetCoincideCharCount=function (text, filter) {
746 while (filter != "" && text.indexOf(filter) != 0) {
747 filter = filter.slice(0, -1);
748 }
749 return filter.length;
750 }
751 =111=
752 FilteringHighlightComplitedText=function (index, filterItemText) {
753 var lb = this.GetListBoxControl();
754 var input = this.FindInputElement();
755 var text = input.value;
756 var valueLenght = text.length;
757 var itemTextLenght = filterItemText.length;
758 input.value = filterItemText;
759 _aspxSetInputSelection(input, valueLenght, itemTextLenght);
760 }
761 =112=
762 FilteringStop=function () {
763 if (this.isFilterEnabled) {
764 this.isEnterLocked = false;
765 if (!this.isCallbackMode) {
766 this.FilteringStopClient();
767 }
768 }
769 }
770 =113=
771 FilteringStopClient=function () {
772 var lb = this.GetListBoxControl();
773 var listTable = lb.GetListTable();
774 var count = lb.GetItemCount();
775 for (var i = 0; i < count; i++) {
776 _aspxSetElementDisplay(listTable.rows[i], true);
777 }
778 }
779 =114=
780 IsFilterKeycode=function (keyCode) {
781 return keyCode == 8 || keyCode == 32 || keyCode > 45;
782 }
783 =115=
784 ShowLoadingPanel=function () {
785 var lb = this.GetListBoxControl();
786 var loadingParentElement = lb.GetScrollDivElement().parentNode;
787 this.loadingDivElement = this.CreateLoadingDiv(loadingParentElement);
788 this.loadingPanelElement = this.CreateLoadingPanelWithAbsolutePosition(loadingParentElement, loadingParentElement);
789 }
790 =116=
791 HideLoadingPanel=function () {
792 if (_aspxIsExistsElement(this.loadingPanelElement)) {
793 this.loadingPanelElement.parentNode.removeChild(this.loadingPanelElement);
794 this.loadingPanelElement = null;
795 }
796 if (_aspxIsExistsElement(this.loadingDivElement)) {
797 this.loadingDivElement.parentNode.removeChild(this.loadingDivElement);
798 this.loadingDivElement = null;
799 }
800 }
801 =117=
802 FormatCallbackArg=function (prefix, arg) {
803 if (arg == null) {
804 return "";
805 }
806 if (!_aspxIsExists(arg.length) && _aspxIsExists(arg.value)) {
807 arg = arg.value;
808 }
809 if (arg == null || arg == "") {
810 return "";
811 }
812 return prefix + "|" + arg.length + ";" + arg + ";";
813 }
814 =118=
815 OnAfterCallback=function () {
816 this.CollectionChanged();
817 this.HideLoadingPanel();
818 this.isPerformCallback = false;
819 }
820 =119=
821 OnCallback=function (result) {
822 this.GetListBoxControl().OnCallback(result);
823 this.OnCallbackInternal(result);
824 this.OnAfterCallback();
825 }
826 =120=
827 OnCallbackError=function (result) {
828 this.GetListBoxControl().OnCallbackError(result);
829 this.OnAfterCallback();
830 }
831 =121=
832 OnCallbackInternal=function (result) {
833 this.OnFilterCallback(result);
834 if (this.changeSelectAfterCallback > 0) {
835 var lb = this.GetListBoxControl();
836 this.SelectNeighbourInternal(lb, lb.GetSelectedIndexInternal() + this.changeSelectAfterCallback);
837 this.changeSelectAfterCallback = 0;
838 }
839 }
840 =122=
841 OnFilterCallback=function (result) {
842 var lb = this.GetListBoxControl();
843 if (lb.GetItemCount() > 0) {
844 var firstItemText = lb.GetItem(0).text;
845 var isTextClearing = !this.isDropDownListStyle &&
846 this.filter == "" && this.filter != firstItemText;
847 if (!isTextClearing) {
848 var isFilterRollBack = this.CheckForFilterRollback(lb, firstItemText);
849 var isNonFilterChangingCallback = lb.GetSelectedItem() == null;
850 if (isFilterRollBack || isNonFilterChangingCallback) {
851 this.FilteringHighlightComplitedText(0, firstItemText);
852 this.SelectIndexSilent(lb, 0);
853 }
854 }
855 if (!this.isPerformCallback) {
856 this.EnshureShowDropDownArea();
857 }
858 } else {
859 this.HideDropDownArea(true);
860 }
861 this.isEnterLocked = false;
862 }
863 =123=
864 CheckForFilterRollback=function (lb, firstItemText) {
865 var isHasCorrection = false;
866 var filter = this.filter.toLowerCase();
867 firstItemText = firstItemText.toLowerCase();
868 while (firstItemText.substring(0, filter.length).toLowerCase() != filter) {
869 filter = filter.slice(0, -1);
870 isHasCorrection = true;
871 }
872 if (isHasCorrection) {
873 this.filter = this.filter.substring(0, filter.length);
874 this.FindInputElement().value = this.filter;
875 }
876 return isHasCorrection;
877 }
878 =124=
879 SendCallback=function () {
880 this.ShowLoadingPanel();
881 argument = this.GetCallbackArguments();
882 this.CreateCallback(argument);
883 }
884 =125=
885 SelectNeighbour=function (step) {
886 if (this.isToolBarItem && !this.droppedDown) {
887 return;
888 }
889 var lb = this.GetListBoxControl();
890 var listTable = lb.GetListTable();
891 var index = lb.GetSelectedIndexInternal();
892 var count = lb.GetItemCount();
893 if (count > 0) {
894 var isFirstPageDown = index == -1 && step == lb.scrollPageSize;
895 var newIndex = isFirstPageDown ? step : this.GetNeighbourIndex(listTable.rows, count, index, step);
896 this.SelectNeighbourInternal(lb, newIndex);
897 lb.ScrollToItemVisible(newIndex);
898 }
899 }
900 =126=
901 SelectNeighbourInternal=function (lb, index) {
902 if (this.droppedDown) {
903 this.SelectIndexSilent(lb, index);
904 this.SetTextInternal(lb.GetItem(index).text);
905 } else {
906 lb.SelectIndexInternal(index);
907 }
908 }
909 =127=
910 GetNeighbourIndex=function (rows, count, startIndex, step) {
911 var newIndex = startIndex + step;
912 if (this.isFilterEnabled && !this.isCallbackMode) {
913 var stepOne = step > 0 ? 1 : -1;
914 var outermostVisibleIndex = startIndex;
915 for (var index = startIndex + stepOne;; index += stepOne) {
916 if (index < 0 || count <= index) {
917 newIndex = outermostVisibleIndex;
918 break;
919 }
920 if (_aspxGetElementDisplay(rows[index])) {
921 outermostVisibleIndex = index;
922 if (index == newIndex) {
923 break;
924 }
925 } else {
926 newIndex += stepOne;
927 }
928 }
929 }
930 if (step < 0 && newIndex < 0 || step < - count) {
931 newIndex = 0;
932 }
933 if (step > 0 && newIndex >= count || step > count) {
934 if (this.isCallbackMode) {
935 var lb = this.GetListBoxControl();
936 var bottomSpaser = lb.GetBottomScrollSpacingElement();
937 if (_aspxGetElementDisplay(bottomSpaser)) {
938 this.changeSelectAfterCallback = 1;
939 lb.LoadNextItemsOnCallback();
940 }
941 }
942 newIndex = count - 1;
943 }
944 return newIndex;
945 }
946 =128=
947 OnKBSKeyDown=function (evt) {
948 if (evt.keyCode != 16) {
949 _aspxClearTimer(this.filterTimerId);
950 }
951 return false;
952 }
953 =129=
954 OnArrowUp=function (evt) {
955 var isProcessed = ASPxClientDropDownEdit.prototype.OnArrowUp.call(this, evt);
956 if (!isProcessed) {
957 this.SelectNeighbour(-1);
958 }
959 return true;
960 }
961 =130=
962 OnArrowDown=function (evt) {
963 var isProcessed = ASPxClientDropDownEdit.prototype.OnArrowDown.call(this, evt);
964 if (!isProcessed) {
965 this.SelectNeighbour(1);
966 }
967 return true;
968 }
969 =131=
970 OnPageUp=function () {
971 return this.OnPageButtonDown(false);
972 }
973 =132=
974 OnPageDown=function () {
975 return this.OnPageButtonDown(true);
976 }
977 =133=
978 OnPageButtonDown=function (isDown) {
979 var lb = this.GetListBoxControl();
980 if (_aspxIsExists(lb)) {
981 var direction = isDown ? 1 : -1;
982 this.SelectNeighbour(lb.scrollPageSize * direction);
983 }
984 return true;
985 }
986 =134=
987 OnHomeKeyDown=function (evt) {
988 return this.OnHomeEndKeyDown(evt, true);
989 }
990 =135=
991 OnEndKeyDown=function (evt) {
992 return this.OnHomeEndKeyDown(evt, false);
993 }
994 =136=
995 OnHomeEndKeyDown=function (evt, isHome) {
996 var input = this.GetValueInput();
997 if (input.readOnly || evt.ctrlKey) {
998 var lb = this.GetListBoxControl();
999 var count = lb.GetItemCount();
1000 this.SelectNeighbour(isHome ? - count : count);
1001 return true;
1002 }
1003 return false;
1004 }
1005 =137=
1006 OnEnter=function () {
1007 if (!this.isEnterLocked) {
1008 this.OnApplyChangesInternal();
1009 this.HideDropDownArea(true);
1010 }
1011 return true;
1012 }
1013 =138=
1014 OnApplyChanges=function () {
1015 if (this.isDropDownListStyle && !this.isFilterEnabled) {
1016 return;
1017 }
1018 this.OnApplyChangesInternal();
1019 }
1020 =139=
1021 OnApplyChangesInternal=function () {
1022 var text = this.FindInputElement().value;
1023 var isChanged = this.lastSuccessText != text;
1024 if (isChanged) {
1025 var lb = this.GetListBoxControl();
1026 if (this.isDropDownListStyle &&
1027 this.FindItemIndexByText(lb, text) < 0) {
1028 var lbItem = lb.GetSelectedItem();
1029 text = lbItem != null ? lbItem.text : this.lastSuccessText;
1030 }
1031 }
1032 this.SetText(text);
1033 if (isChanged) {
1034 this.OnChange();
1035 }
1036 }
1037 =140=
1038 OnButtonClick=function (number) {
1039 if (number != this.dropDownButtonIndex) {
1040 this.HideDropDownArea(true);
1041 }
1042 ASPxClientButtonEditBase.prototype.OnButtonClick.call(this, number);
1043 }
1044 =141=
1045 OnCancelChanges=function () {
1046 ASPxClientDropDownEdit.prototype.OnCancelChanges.call(this);
1047 var lb = this.GetListBoxControl();
1048 var index = this.FindItemIndexByText(lb, this.lastSuccessText);
1049 this.SelectIndexSilent(lb, index);
1050 }
1051 =142=
1052 OnChange=function () {
1053 this.UpdateValueInput();
1054 this.RaisePersonalStandardValidation();
1055 this.OnValueChanged();
1056 }
1057 =143=
1058 OnCloseUp=function (evt) {
1059 var evt = _aspxGetEvent(evt);
1060 if (__aspxFirefox &&
1061 evt.type == "mouseup" && _aspxGetEventSource(evt).tagName == "DIV") {
1062 return;
1063 }
1064 ASPxClientDropDownEdit.prototype.OnCloseUp.call(this, evt);
1065 }
1066 =144=
1067 OnDDButtonMouseMove=function (evt) {
1068 return this.droppedDown ? _aspxCancelBubble(evt) : true;
1069 }
1070 =145=
1071 OnDocumentMouseDown=function () {
1072 this.OnCancelChanges();
1073 ASPxClientDropDownEdit.prototype.OnDocumentMouseDown.call(this);
1074 }
1075 =146=
1076 OnDocumentMouseUp=function () {
1077 this.DropDownButtonPop();
1078 }
1079 =147=
1080 OnDropDown=function (evt) {
1081 this.SetFocus();
1082 var lb = this.GetListBoxControl();
1083 if (lb.GetItemCount() > 0) {
1084 this.OnDropDownInternal(evt);
1085 }
1086 return true;
1087 }
1088 =148=
1089 OnDropDownInternal=function (evt) {
1090 if (!this.droppedDown) {
1091 this.DropDownButtonPush();
1092 }
1093 return ASPxClientDropDownEdit.prototype.OnDropDown.call(this, evt);
1094 }
1095 =149=
1096 OnItemClick=function () {
1097 this.OnSelectChanged();
1098 this.OnClick();
1099 }
1100 =150=
1101 OnListBoxClick=function (evt) {
1102 if (!this.InCallback()) {
1103 this.OnApplyChangesInternal();
1104 this.OnCloseUp(evt);
1105 }
1106 }
1107 =151=
1108 OnMouseWheel=function (evt) {
1109 if (!this.droppedDown) {
1110 var wheelDelta = _aspxGetWheelDelta(evt);
1111 if (wheelDelta > 0) {
1112 this.SelectNeighbour(-1);
1113 } else if (wheelDelta < 0) {
1114 this.SelectNeighbour(1);
1115 }
1116 return _aspxPreventEvent(evt);
1117 }
1118 }
1119 =152=
1120 OnSetFocus=function (isFocused) {
1121 if (isFocused && this.isFilterEnabled && !this.isToolBarItem) {
1122 this.SelectInputText();
1123 }
1124 aspxGetDropDownCollection().SetFocusedDropDownName(isFocused ? this.name : "");
1125 }
1126 =153=
1127 OnSelectChanged=function () {
1128 if (this.lbEventLockCount > 0) {
1129 return;
1130 }
1131 var lb = this.GetListBoxControl();
1132 var item = lb.GetSelectedItem();
1133 var text = item != null ? item.text : "";
1134 this.lastSuccessText = text;
1135 this.lastSuccessValue = item != null ? item.value : text;
1136 this.islastSuccessValueInit = true;
1137 this.SetTextInternal(text);
1138 this.OnChange();
1139 if (!this.isToolBarItem) {
1140 this.SelectInputElement();
1141 } else {
1142 this.SetFocus();
1143 }
1144 }
1145 =154=
1146 OnTextChanged=function () {
1147 if (this.isFilterEnabled && (!this.isDropDownListStyle || __aspxOpera)) {
1148 this.OnCancelChanges();
1149 } else {
1150 ASPxClientDropDownEdit.prototype.OnTextChanged.call(this);
1151 }
1152 }
1153 =155=
1154 ParseValue=function () {
1155 this.SetText(ASPxClientButtonEditBase.prototype.GetValue.call(this));
1156 this.OnChange();
1157 }
1158 =156=
1159 RaiseValueChangedEvent=function () {
1160 var processOnServer = ASPxClientTextEdit.prototype.RaiseValueChangedEvent.call(this);
1161 if (_aspxIsExists(this.RaiseSelectedIndexChanged)) {
1162 processOnServer = this.RaiseSelectedIndexChanged() || processOnServer;
1163 }
1164 return processOnServer;
1165 }
1166 =157=
1167 RaiseSelectedIndexChanged=function () {
1168 var processOnServer = this.autoPostBack;
1169 if (!this.SelectedIndexChanged.IsEmpty()) {
1170 var args = new ASPxClientProcessingModeEventArgs(processOnServer);
1171 this.SelectedIndexChanged.FireEvent(this, args);
1172 processOnServer = args.processOnServer;
1173 }
1174 return processOnServer;
1175 }
1176 =158=
1177 AddItem=function (text, value, imageUrl) {
1178 var index = this.GetListBoxControl().AddItem(text, value, imageUrl);
1179 this.CollectionChanged();
1180 return index;
1181 }
1182 =159=
1183 InsertItem=function (index, text, value, imageUrl) {
1184 this.GetListBoxControl().InsertItem(index, text, value, imageUrl);
1185 this.CollectionChanged();
1186 }
1187 =160=
1188 RemoveItem=function (index) {
1189 this.GetListBoxControl().RemoveItem(index);
1190 this.CollectionChanged();
1191 }
1192 =161=
1193 ClearItems=function () {
1194 this.GetListBoxControl().ClearItems();
1195 this.ClearItemsInternal();
1196 }
1197 =162=
1198 BeginUpdate=function () {
1199 this.GetListBoxControl().BeginUpdate();
1200 }
1201 =163=
1202 EndUpdate=function () {
1203 this.GetListBoxControl().EndUpdate();
1204 this.CollectionChanged();
1205 }
1206 =164=
1207 MakeItemVisible=function (index) {
1208 var lb = this.GetListBoxControl();
1209 lb.MakeItemVisible(index);
1210 }
1211 =165=
1212 GetItem=function (index) {
1213 return this.GetListBoxControl().GetItem(index);
1214 }
1215 =166=
1216 GetItemCount=function () {
1217 return this.GetListBoxControl().GetItemCount();
1218 }
1219 =167=
1220 GetSelectedIndex=function () {
1221 return this.GetListBoxControl().GetSelectedIndexInternal();
1222 }
1223 =168=
1224 SetSelectedIndex=function (index) {
1225 this.SelectIndex(index);
1226 }
1227 =169=
1228 GetSelectedItem=function () {
1229 var lb = this.GetListBoxControl();
1230 var index = lb.GetSelectedIndexInternal();
1231 return lb.GetItem(index);
1232 }
1233 =170=
1234 SetSelectedItem=function (item) {
1235 var index = item != null ? item.index : -1;
1236 this.SelectIndex(index);
1237 }
1238 =171=
1239 GetText=function () {
1240 return this.lastSuccessText;
1241 }
1242 =172=
1243 PerformCallback=function (arg) {
1244 this.isPerformCallback = true;
1245 this.ClearItemsInternal();
1246 this.GetListBoxControl().PerformCallback(arg);
1247 }
1248 =173=
1249 ClearItemsInternal=function () {
1250 this.SetValue(null);
1251 this.CollectionChanged();
1252 var lbScrollDiv = this.GetListBoxScrollDivElement();
1253 if (_aspxIsExists(lbScrollDiv)) {
1254 lbScrollDiv.scrollTop = "0px";
1255 }
1256 }
1257 =174=
1258 InitKeyboardInput=function () {
1259 var kbInput = this.GetInputElement();
1260 if (_aspxIsExistsElement(kbInput)) {
1261 _aspxAttachKBSupportEventsToElement(kbInput, this.name);
1262 this.lastSuccessText = kbInput.value;
1263 }
1264 }
1265 =175=
1266 AssignClientAttributes=function () {
1267 var element = this.GetDropDownButton();
1268 if (_aspxIsExistsElement(element)) {
1269 _aspxPreventElementDragAndSelect(element, true);
1270 }
1271 var mainElement = this.GetMainElement();
1272 if (_aspxIsExistsElement(mainElement)) {
1273 _aspxAttachEventToElement(mainElement, "click", _aspxCreateEventHandlerFunction("aspxDDMainElementClick", this.name, true));
1274 }
1275 }
1276 =176=
1277 GetDropDownButton=function () {
1278 return this.GetButton(this.dropDownButtonIndex);
1279 }
1280 =177=
1281 GetPopupControl=function () {
1282 return aspxGetControlCollection().Get(this.name + __aspxDropDownNameSuffix);
1283 }
1284 =178=
1285 GetDropDownInnerControlName=function (suffix) {
1286 var pc = this.GetPopupControl();
1287 if (_aspxIsExists(pc)) {
1288 return this.GetPopupControl().name + suffix;
1289 }
1290 return "";
1291 }
1292 =179=
1293 ProcessInternalButtonClick=function (number) {
1294 return this.dropDownButtonIndex == number;
1295 }
1296 =180=
1297 ToggleDropDown=function () {
1298 this.OnApplyChanges();
1299 if (this.droppedDown) {
1300 this.HideDropDownArea(true);
1301 } else {
1302 this.ShowDropDownArea(true);
1303 }
1304 }
1305 =181=
1306 SetTextInternal=function (text) {
1307 if (!this.readOnly) {
1308 ASPxClientButtonEditBase.prototype.SetValue.call(this, text);
1309 }
1310 }
1311 =182=
1312 OnValueChanged=function () {
1313 this.lastSuccessText = this.FindInputElement().value;
1314 ASPxClientEdit.prototype.OnValueChanged.call(this);
1315 }
1316 =183=
1317 OnClick=function () {
1318 this.SetFocus();
1319 }
1320 =184=
1321 OnEscape=function () {
1322 this.OnCancelChanges();
1323 this.HideDropDownArea(true);
1324 return true;
1325 }
1326 =185=
1327 RaiseCloseUp=function () {
1328 if (!this.CloseUp.IsEmpty()) {
1329 var args = new ASPxClientEventArgs;
1330 this.CloseUp.FireEvent(this, args);
1331 }
1332 }
1333 =186=
1334 RaiseDropDown=function () {
1335 if (!this.DropDown.IsEmpty()) {
1336 var args = new ASPxClientEventArgs;
1337 this.DropDown.FireEvent(this, args);
1338 }
1339 }
1340 =187=
1341 ShowDropDown=function () {
1342 this.ShowDropDownArea(false);
1343 }
1344 =188=
1345 HideDropDown=function () {
1346 this.HideDropDownArea(false);
1347 }
1348 =189=
1349 GetButton=function (number) {
1350 return _aspxGetElementById(this.name + __aspxBESuffix + number);
1351 }
1352 =190=
1353 SelectInputElement=function () {
1354 var element = this.GetInputElement();
1355 if (_aspxIsExistsElement(element)) {
1356 element.focus();
1357 element.select();
1358 }
1359 }
1360 =191=
1361 RaiseButtonClick=function (number) {
1362 var processOnServer = this.autoPostBack || this.IsServerEventAssigned("ButtonClick");
1363 if (!this.ButtonClick.IsEmpty()) {
1364 var args = new ASPxClientButtonEditClickEventArgs(processOnServer, number);
1365 this.ButtonClick.FireEvent(this, args);
1366 processOnServer = args.processOnServer;
1367 }
1368 return processOnServer;
1369 }
1370 =192=
1371 FindInputElement=function () {
1372 return _aspxGetElementById(this.name + __aspxTEInputSuffix);
1373 }
1374 =193=
1375 SetSelectionInInput=function (startPos, endPos) {
1376 var inputElement = this.GetInputElement();
1377 if (__aspxIE) {
1378 var range = inputElement.createTextRange();
1379 range.collapse(true);
1380 range.moveStart("character", startPos);
1381 range.moveEnd("character", endPos - startPos);
1382 range.select();
1383 } else {
1384 inputElement.setSelectionRange(startPos, endPos);
1385 }
1386 }
1387 =194=
1388 CollapseControl=function (checkSizeCorrectedFlag) {
1389 if (checkSizeCorrectedFlag && this.sizeCorrectedOnce) {
1390 return;
1391 }
1392 var mainElement = this.GetMainElement();
1393 if (!_aspxIsExistsElement(mainElement)) {
1394 return;
1395 }
1396 var mainElementCurStyle = _aspxGetCurrentStyle(mainElement);
1397 if (_aspxIsExistsElement(mainElement) &&
1398 this.widthCorrectionRequired &&
1399 mainElementCurStyle.width != "" &&
1400 mainElementCurStyle.width != "auto") {
1401 this.GetInputElement().style.width = "0";
1402 }
1403 }
1404 =195=
1405 CorrectEditorWidth=function () {
1406 var inputElement = this.GetInputElement();
1407 _aspxSetOffsetWidth(inputElement, _aspxGetClearClientWidth(_aspxFindOffsetParent(inputElement)));
1408 }
1409 =196=
1410 UnstretchInputElement=function () {
1411 var inputElement = this.GetInputElement();
1412 var mainElement = this.GetMainElement();
1413 var mainElementCurStyle = _aspxGetCurrentStyle(mainElement);
1414 if (_aspxIsExistsElement(mainElement) &&
1415 _aspxIsExistsElement(inputElement) &&
1416 inputElement.style.width == "100%" &&
1417 (mainElementCurStyle.width == "" ||
1418 mainElementCurStyle.width == "auto")) {
1419 inputElement.style.width = "";
1420 }
1421 }
1422 =197=
1423 OnKeyDown=function (evt) {
1424 if (_aspxIsExists(this.RaiseKeyDown)) {
1425 this.RaiseKeyDown(evt);
1426 }
1427 }
1428 =198=
1429 OnKeyPress=function (evt) {
1430 if (_aspxIsExists(this.RaiseKeyPress)) {
1431 this.RaiseKeyPress(evt);
1432 }
1433 }
1434 =199=
1435 OnKeyUp=function (evt) {
1436 if (_aspxIsExists(this.RaiseKeyUp)) {
1437 this.RaiseKeyUp(evt);
1438 }
1439 }
1440 =200=
1441 RaiseTextChanged=function () {
1442 var processOnServer = this.autoPostBack;
1443 if (!this.TextChanged.IsEmpty()) {
1444 var args = new ASPxClientProcessingModeEventArgs(processOnServer);
1445 this.TextChanged.FireEvent(this, args);
1446 processOnServer = args.processOnServer;
1447 }
1448 return processOnServer;
1449 }
1450 =201=
1451 SelectAll=function () {
1452 this.SetSelection(0, -1, false);
1453 }
1454 =202=
1455 SetCaretPosition=function (pos) {
1456 if (pos == -1) {
1457 pos = this.GetText().length;
1458 }
1459 this.SetSelection(pos, pos, true);
1460 }
1461 =203=
1462 SetSelection=function (startPos, endPos, scrollToSelection) {
1463 var textLen = this.GetText().length;
1464 if (endPos == -1 || endPos > textLen) {
1465 endPos = textLen;
1466 }
1467 if (startPos > textLen) {
1468 startPos = textLen;
1469 }
1470 if (startPos > endPos) {
1471 return;
1472 }
1473 this.SetSelectionInInput(startPos, endPos);
1474 var inputElement = this.FindInputElement();
1475 if (scrollToSelection &&
1476 inputElement.tagName.toUpperCase() == "TEXTAREA") {
1477 var scrollHeight = inputElement.scrollHeight;
1478 var approxCaretPos = startPos;
1479 var scrollTop = Math.max(Math.round(approxCaretPos / textLen * scrollHeight - inputElement.clientHeight / 2), 0);
1480 inputElement.scrollTop = scrollTop;
1481 }
1482 }
1483 =204=
1484 AfterInitialize=function () {
1485 this.CorrectSize(__aspxCheckSizeCorrectedFlag);
1486 this.constructor.prototype.AfterInitialize.call(this);
1487 }
1488 =205=
1489 GetElementBySuffix=function (suffix) {
1490 return _aspxGetElementById(this.name + suffix);
1491 }
1492 =206=
1493 GetErrorImage=function () {
1494 return this.GetElementBySuffix(__aspxErrorImageSuffix);
1495 }
1496 =207=
1497 GetErrorTextCell=function () {
1498 return this.GetElementBySuffix(this.errorImageIsAssigned ? __aspxErrorTextCellSuffix : __aspxErrorCellSuffix);
1499 }
1500 =208=
1501 GetExternalTable=function () {
1502 return this.GetElementBySuffix(__aspxExternalTableSuffix);
1503 }
1504 =209=
1505 GetInputElement=function () {
1506 if (!_aspxIsExistsElement(this.inputElement)) {
1507 this.inputElement = this.FindInputElement();
1508 }
1509 return this.inputElement;
1510 }
1511 =210=
1512 IsDisplayed=function () {
1513 var element = this.GetMainElement();
1514 while (element != null && element.tagName != "BODY") {
1515 if (!_aspxGetElementDisplay(element)) {
1516 return false;
1517 }
1518 element = _aspxGetParentNode(element);
1519 }
1520 return true;
1521 }
1522 =211=
1523 IsVisible=function () {
1524 return this.IsElementInVisibleContainer(this.GetMainElement());
1525 }
1526 =212=
1527 IsElementInVisibleContainer=function (element) {
1528 var curElement = element;
1529 while (_aspxIsExists(curElement) &&
1530 _aspxIsExists(curElement.tagName) && curElement.tagName != "BODY") {
1531 if (curElement.getAttribute("errorFrame") != "errorFrame") {
1532 if (_aspxIsExists(curElement.style.display) &&
1533 curElement.style.display == "none" ||
1534 _aspxIsExists(curElement.style.visibility) &&
1535 curElement.style.visibility == "hidden") {
1536 return false;
1537 }
1538 }
1539 curElement = curElement.parentNode;
1540 }
1541 return true;
1542 }
1543 =213=
1544 CorrectEditorHeight=function () {
1545 }
1546 =214=
1547 OnFocus=function () {
1548 if (!this.isInitialized) {
1549 return;
1550 }
1551 if (_aspxIsExists(this.RaiseFocus)) {
1552 this.RaiseFocus();
1553 }
1554 }
1555 =215=
1556 OnLostFocus=function () {
1557 if (!this.isInitialized) {
1558 return;
1559 }
1560 if (_aspxIsExists(this.RaiseLostFocus)) {
1561 this.RaiseLostFocus();
1562 }
1563 this.SetFocusOnError();
1564 }
1565 =216=
1566 OnValidation=function () {
1567 if (!this.isInitialized ||
1568 !this.customValidationEnabled || !this.IsVisible()) {
1569 return;
1570 }
1571 this.errorText = this.initialErrorText;
1572 this.isValid = true;
1573 this.ValidateWithPatterns();
1574 if (_aspxIsExists(this.RaiseValidation)) {
1575 this.RaiseValidation();
1576 }
1577 this.UpdateErrorFrame();
1578 }
1579 =217=
1580 RaisePersonalStandardValidation=function () {
1581 if (_aspxIsFunction(window.ValidatorOnChange)) {
1582 var inputElement = this.GetValueInputToValidate();
1583 if (_aspxIsExists(inputElement.Validators)) {
1584 window.ValidatorOnChange({srcElement:inputElement});
1585 }
1586 }
1587 }
1588 =218=
1589 RaiseValidationInternal=function () {
1590 if (this.autoPostBack && this.causesValidation) {
1591 return ASPxClientEdit.ValidateGroup(this.validationGroup);
1592 } else {
1593 this.OnValidation();
1594 return this.isValid;
1595 }
1596 }
1597 =219=
1598 SendPostBackInternal=function (postBackArg) {
1599 if (_aspxIsFunction(this.sendPostBackWithValidation)) {
1600 this.sendPostBackWithValidation(postBackArg);
1601 } else {
1602 this.SendPostBack(postBackArg);
1603 }
1604 }
1605 =220=
1606 SetElementToBeFocused=function () {
1607 var input = this.GetInputElement();
1608 if (_aspxIsExistsElement(input) &&
1609 _aspxIsExists(input.focus) && this.IsVisible()) {
1610 __aspxInvalidEditorElementToBeFocused = input;
1611 }
1612 }
1613 =221=
1614 SetFocus=function () {
1615 var inputElement = this.FindInputElement();
1616 if (_aspxGetActiveElement() != inputElement &&
1617 _aspxIsEditorFocusable(inputElement)) {
1618 _aspxSetFocus(inputElement);
1619 }
1620 }
1621 =222=
1622 SetFocusOnError=function () {
1623 var input = this.GetInputElement();
1624 if (__aspxInvalidEditorElementToBeFocused == input) {
1625 input.focus();
1626 __aspxInvalidEditorElementToBeFocused = null;
1627 }
1628 }
1629 =223=
1630 UpdateErrorFrame=function () {
1631 var externalTable = this.GetExternalTable();
1632 if (this.isValid) {
1633 externalTable.style.visibility = "hidden";
1634 } else {
1635 this.UpdateErrorCellContent();
1636 externalTable.style.visibility = "visible";
1637 if (this.setFocusOnError &&
1638 __aspxInvalidEditorElementToBeFocused == null) {
1639 this.SetElementToBeFocused();
1640 }
1641 }
1642 }
1643 =224=
1644 UpdateErrorCellContent=function () {
1645 if (this.errorDisplayMode.indexOf("t") > -1) {
1646 this.UpdateErrorText();
1647 }
1648 if (this.errorDisplayMode == "i") {
1649 this.UpdateErrorImage();
1650 }
1651 }
1652 =225=
1653 UpdateErrorImage=function () {
1654 var image = this.GetErrorImage();
1655 if (_aspxIsExistsElement(image)) {
1656 image.alt = this.errorText;
1657 image.title = this.errorText;
1658 } else {
1659 this.UpdateErrorText();
1660 }
1661 }
1662 =226=
1663 UpdateErrorText=function () {
1664 var errorTextCell = this.GetErrorTextCell();
1665 if (_aspxIsExistsElement(errorTextCell)) {
1666 if (_aspxIsExistsElement(errorTextCell.firstChild)) {
1667 errorTextCell.replaceChild(document.createTextNode(this.errorText), errorTextCell.firstChild);
1668 } else {
1669 errorTextCell.appendChild(document.createTextNode(this.errorText));
1670 }
1671 }
1672 }
1673 =227=
1674 ValidateWithPatterns=function () {
1675 if (this.validationPatterns != null) {
1676 var value = this.GetValue();
1677 for (var i = 0; i < this.validationPatterns.length; i++) {
1678 var validator = this.validationPatterns[i];
1679 if (!validator.EvaluateIsValid(value)) {
1680 this.isValid = false;
1681 this.errorText = validator.errorText;
1682 return;
1683 }
1684 }
1685 }
1686 }
1687 =228=
1688 Focus=function () {
1689 this.SetFocus();
1690 }
1691 =229=
1692 GetIsValid=function () {
1693 return this.isValid;
1694 }
1695 =230=
1696 GetErrorText=function () {
1697 return this.errorText;
1698 }
1699 =231=
1700 RaiseFocus=function () {
1701 if (!this.GotFocus.IsEmpty()) {
1702 var args = new ASPxClientEventArgs;
1703 this.GotFocus.FireEvent(this, args);
1704 }
1705 }
1706 =232=
1707 RaiseLostFocus=function () {
1708 if (!this.LostFocus.IsEmpty()) {
1709 var args = new ASPxClientEventArgs;
1710 this.LostFocus.FireEvent(this, args);
1711 }
1712 }
1713 =233=
1714 RaiseValidation=function () {
1715 if (this.customValidationEnabled && !this.Validation.IsEmpty()) {
1716 var currentValue = this.GetValue();
1717 var args = new ASPxClientEditValidationEventArgs(currentValue, this.errorText, this.isValid);
1718 this.Validation.FireEvent(this, args);
1719 this.errorText = args.errorText;
1720 this.isValid = args.isValid;
1721 if (currentValue != args.value) {
1722 this.SetValue(args.value);
1723 }
1724 }
1725 }
1726 =234=
1727 RaiseValueChanged=function () {
1728 var processOnServer = this.autoPostBack;
1729 if (!this.ValueChanged.IsEmpty()) {
1730 var args = new ASPxClientProcessingModeEventArgs(processOnServer);
1731 this.ValueChanged.FireEvent(this, args);
1732 processOnServer = args.processOnServer;
1733 }
1734 return processOnServer;
1735 }
1736 =235=
1737 SetIsValid=function (isValid) {
1738 if (this.customValidationEnabled) {
1739 this.isValid = isValid;
1740 this.UpdateErrorFrame();
1741 }
1742 }
1743 =236=
1744 SetErrorText=function (errorText) {
1745 if (this.customValidationEnabled) {
1746 this.errorText = errorText;
1747 this.UpdateErrorFrame();
1748 }
1749 }
1750 =237=
1751 Validate=function () {
1752 this.ParseValue();
1753 this.OnValidation();
1754 }
1755 =238=
1756 RaiseKeyDown=function (evt) {
1757 if (!this.KeyDown.IsEmpty()) {
1758 var args = new ASPxClientEditKeyEventArgs(evt);
1759 this.KeyDown.FireEvent(this, args);
1760 }
1761 }
1762 =239=
1763 RaiseKeyPress=function (evt) {
1764 if (!this.KeyPress.IsEmpty()) {
1765 var args = new ASPxClientEditKeyEventArgs(evt);
1766 this.KeyPress.FireEvent(this, args);
1767 }
1768 }
1769 =240=
1770 RaiseKeyUp=function (evt) {
1771 if (!this.KeyUp.IsEmpty()) {
1772 var args = new ASPxClientEditKeyEventArgs(evt);
1773 this.KeyUp.FireEvent(this, args);
1774 }
1775 }
1776 =241=
1777 GetValueString=function () {
1778 var value = this.GetValue();
1779 return value == null ? null : value.toString();
1780 }
1781 =242=
1782 InitializeCallBackData=function () {
1783 }
1784 =243=
1785 RegisterServerEventAssigned=function (eventNames) {
1786 for (var i = 0; i < eventNames.length; i++) {
1787 this.serverEvents[eventNames[i]] = true;
1788 }
1789 }
1790 =244=
1791 IsServerEventAssigned=function (eventName) {
1792 return _aspxIsExists(this.serverEvents[eventName]);
1793 }
1794 =245=
1795 GetChild=function (idPostfix) {
1796 var mainElement = this.GetMainElement();
1797 return _aspxIsExists(mainElement) ? _aspxGetChildById(this.GetMainElement(), this.name + idPostfix) : null;
1798 }
1799 =246=
1800 GetItemElementName=function (element) {
1801 var name = "";
1802 if (_aspxIsExists(element.id)) {
1803 name = element.id.substring(this.name.length + 1);
1804 }
1805 return name;
1806 }
1807 =247=
1808 GetLinkElement=function (element) {
1809 if (element != null) {
1810 if (element.tagName.toUpperCase() == "A") {
1811 return element;
1812 } else {
1813 return _aspxGetChildByTagName(element, "A", 0);
1814 }
1815 }
1816 return null;
1817 }
1818 =248=
1819 GetMainElement=function () {
1820 if (!_aspxIsExistsElement(this.mainElement)) {
1821 this.mainElement = _aspxGetElementById(this.name);
1822 }
1823 return this.mainElement;
1824 }
1825 =249=
1826 OnControlClick=function (clickedElement, htmlEvent) {
1827 }
1828 =250=
1829 GetLoadingPanelElement=function () {
1830 return _aspxGetElementById(this.name + "_LP");
1831 }
1832 =251=
1833 CreateLoadingPanelClone=function (element, parentElement) {
1834 var cloneElement = element.cloneNode(true);
1835 cloneElement.id = element.id + "V";
1836 parentElement.appendChild(cloneElement);
1837 return cloneElement;
1838 }
1839 =252=
1840 CreateLoadingPanelInsideContainer=function (parentElement) {
1841 if (parentElement == null) {
1842 return;
1843 }
1844 var element = this.GetLoadingPanelElement();
1845 if (element != null) {
1846 var itemsTable = _aspxGetChildByTagName(parentElement, "TABLE", 0);
1847 var width = itemsTable != null ? itemsTable.offsetWidth : parentElement.clientWidth;
1848 var height = itemsTable != null ? itemsTable.offsetHeight : parentElement.clientHeight;
1849 parentElement.innerHTML = "";
1850 var table = document.createElement("TABLE");
1851 parentElement.appendChild(table);
1852 table.border = 0;
1853 table.cellPadding = 0;
1854 table.cellSpacing = 0;
1855 table.style.height = height + "px";
1856 table.style.width = width + "px";
1857 var tbody = document.createElement("TBODY");
1858 table.appendChild(tbody);
1859 var tr = document.createElement("TR");
1860 tbody.appendChild(tr);
1861 var td = document.createElement("TD");
1862 tr.appendChild(td);
1863 td.align = "center";
1864 td.vAlign = "middle";
1865 element = this.CreateLoadingPanelClone(element, td);
1866 _aspxSetElementDisplay(element, true);
1867 return element;
1868 } else {
1869 parentElement.innerHTML = " ";
1870 }
1871 return null;
1872 }
1873 =253=
1874 CreateLoadingPanelWithAbsolutePosition=function (parentElement, offsetElement) {
1875 if (parentElement == null) {
1876 return;
1877 }
1878 if (!_aspxIsExists(offsetElement)) {
1879 offsetElement = parentElement;
1880 }
1881 var element = this.GetLoadingPanelElement();
1882 if (element != null) {
1883 element = this.CreateLoadingPanelClone(element, parentElement);
1884 element.style.position = "absolute";
1885 _aspxSetElementDisplay(element, true);
1886 this.SetLoadingPanelLocation(offsetElement, element);
1887 return element;
1888 }
1889 return null;
1890 }
1891 =254=
1892 CreateLoadingPanelInline=function (parentElement) {
1893 if (parentElement == null) {
1894 return;
1895 }
1896 var element = this.GetLoadingPanelElement();
1897 if (element != null) {
1898 element = this.CreateLoadingPanelClone(element, parentElement);
1899 _aspxSetElementDisplay(element, true);
1900 return element;
1901 }
1902 return null;
1903 }
1904 =255=
1905 SetLoadingPanelLocation=function (element, loadingPanel) {
1906 var ptX = this.GetElementScrollLocationAndSize(_aspxGetAbsoluteX(element), element.offsetWidth, _aspxGetDocumentScrollLeft(), _aspxGetDocumentClientWidth());
1907 var ptY = this.GetElementScrollLocationAndSize(_aspxGetAbsoluteY(element), element.offsetHeight, _aspxGetDocumentScrollTop(), _aspxGetDocumentClientHeight());
1908 loadingPanel.style.left = ptX.pos + (ptX.size - loadingPanel.offsetWidth) / 2 - _aspxGetOffset(element, true) + "px";
1909 loadingPanel.style.top = ptY.pos + (ptY.size - loadingPanel.offsetHeight) / 2 - _aspxGetOffset(element, false) + "px";
1910 }
1911 =256=
1912 GetElementScrollLocationAndSize=function (abs, size, scrollPos, scrollSize) {
1913 var pt = new Object;
1914 pt.pos = abs;
1915 pt.size = size;
1916 if (abs < scrollPos + scrollSize) {
1917 if (abs < scrollPos) {
1918 pt.pos = scrollPos;
1919 pt.size -= scrollPos - abs;
1920 }
1921 if (pt.size + pt.pos > scrollPos + scrollSize) {
1922 pt.size = scrollSize - (pt.pos - scrollPos);
1923 }
1924 }
1925 return pt;
1926 }
1927 =257=
1928 GetLoadingDiv=function () {
1929 return _aspxGetElementById(this.name + "_LD");
1930 }
1931 =258=
1932 CreateLoadingDiv=function (parentElement, offsetElement) {
1933 if (parentElement == null) {
1934 return;
1935 }
1936 if (!_aspxIsExists(offsetElement)) {
1937 offsetElement = parentElement;
1938 }
1939 var div = this.GetLoadingDiv();
1940 if (div != null) {
1941 div = div.cloneNode(true);
1942 parentElement.appendChild(div);
1943 div.style.position = "absolute";
1944 div.style.left = _aspxGetRelevantX(offsetElement, parentElement) + "px";
1945 div.style.top = _aspxGetRelevantY(offsetElement, parentElement) + "px";
1946 div.style.width = offsetElement.offsetWidth + "px";
1947 div.style.height = offsetElement.offsetHeight + "px";
1948 _aspxSetElementDisplay(div, true);
1949 return div;
1950 }
1951 return null;
1952 }
1953 =259=
1954 InCallback=function () {
1955 return this.requestCount > 0;
1956 }
1957 =260=
1958 DoBeginCallback=function (command) {
1959 if (_aspxIsExists(this.RaiseBeginCallback)) {
1960 if (!_aspxIsExists(command)) {
1961 command = "";
1962 }
1963 this.RaiseBeginCallback(command);
1964 }
1965 if (_aspxIsExists(WebForm_InitCallback)) {
1966 __theFormPostData = "";
1967 __theFormPostCollection = new Array;
1968 this.ClearPostBackEventInput("__EVENTTARGET");
1969 this.ClearPostBackEventInput("__EVENTARGUMENT");
1970 WebForm_InitCallback();
1971 }
1972 }
1973 =261=
1974 ClearPostBackEventInput=function (id) {
1975 var element = _aspxGetElementById(id);
1976 if (element != null) {
1977 element.value = "";
1978 }
1979 }
1980 =262=
1981 CreateCallback=function (arg, command) {
1982 if (!this.CanCreateCallback()) {
1983 return;
1984 }
1985 this.requestCount++;
1986 this.DoBeginCallback(command);
1987 this.callBack(arg);
1988 }
1989 =263=
1990 CanCreateCallback=function () {
1991 return this.allowMultipleCallbacks || !this.InCallback();
1992 }
1993 =264=
1994 DoEndCallback=function () {
1995 _aspxSetTimeout(_aspxProcessScripts, 1);
1996 _aspxSetTimeout(_aspxProcessLinks, 1);
1997 if (_aspxIsExists(this.RaiseEndCallback)) {
1998 this.RaiseEndCallback();
1999 }
2000 }
2001 =265=
2002 DoCallback=function (result) {
2003 this.requestCount--;
2004 if (result.indexOf(__aspxCallBackErrorPrefix) > -1) {
2005 this.DoCallbackError(result);
2006 } else {
2007 this.OnCallback(result);
2008 }
2009 this.DoEndCallback();
2010 }
2011 =266=
2012 DoCallbackError=function (result) {
2013 var pos = result.indexOf(__aspxCallBackErrorPrefix);
2014 if (pos > -1) {
2015 result = result.substr(pos + __aspxCallBackErrorPrefix.length);
2016 } else {
2017 result = "A server error has occurred while a callBack has being processed on the server.";
2018 }
2019 this.OnCallbackError(result);
2020 }
2021 =267=
2022 DoControlClick=function (evt) {
2023 var clickedElement = __aspxIE ? evt.srcElement : evt.target;
2024 this.OnControlClick(clickedElement, evt);
2025 }
2026 =268=
2027 SendPostBack=function (params) {
2028 __doPostBack(this.uniqueID, params);
2029 }
2030 =269=
2031 RaiseInit=function () {
2032 if (!this.Init.IsEmpty()) {
2033 var args = new ASPxClientEventArgs;
2034 this.Init.FireEvent(this, args);
2035 }
2036 }
2037 =270=
2038 RaiseBeginCallback=function () {
2039 if (!this.BeginCallback.IsEmpty()) {
2040 var args = new ASPxClientEventArgs;
2041 this.BeginCallback.FireEvent(this, args);
2042 }
2043 }
2044 =271=
2045 RaiseEndCallback=function () {
2046 if (!this.EndCallback.IsEmpty()) {
2047 var args = new ASPxClientEventArgs;
2048 this.EndCallback.FireEvent(this, args);
2049 }
2050 }
2051 |
| Вернуться к списку исходников в категории Общие вопросы программирования на ASP.NET |
|
|
 |
 |
 |
 |
|
|