Ответ Юрия помог мне в его решении, поэтому я отдаю ему должное, хотя для его решения потребовались некоторые изменения.
Прежде всего, событие clientShowing
(отображаетсянастройка OnClientShowing = "clientShowing"
в элементе управления AutoExtender) выполняется при инициализации.Здесь мы переопределяем метод _setText
, чтобы убедиться, что ничего не происходит при нажатии на элемент заголовка.Я использовал основную идею из ответа Юрия, который действительно помог мне.Я только изменил проверку класса css вместо значения атрибута ref
.
function clientShowing(sender, e) {
var extender = sender;
var oldSetText = extender._setText;
extender._setText = function (item) {
if (jQuery(item).hasClass('listHeader')) {
// Do nothing. The original version sets the item text to the search
// textbox here, but I just want to keep the current search text.
return;
}
// Call the original version of the _setText method
oldSetText.call(extender, item);
};
}
Итак, нам нужно добавить элемент заголовка в начало списка.Это должно быть сделано в событии clientPopulated
(отображается путем установки OnClientPopulated = "clientPopulated"
в элементе управления AutoExtender).Это событие выполняется каждый раз, когда результаты поиска заканчиваются, поэтому здесь у нас есть правильный счетчик поиска.
function clientPopulated(sender, e) {
var extender = sender;
var completionList = extender.get_completionList();
var completionListCount = completionList.childNodes.length;
var maxCount = extender.get_completionSetCount();
var resultsHeader;
if(completionListCount == maxCount)
resultsHeader = 'Max count of ' + maxCount + ' reached.<br/>'
+ 'Please refine your search.';
else if(completionListCount > 0)
resultsHeader = completionListCount + ' hits.';
else
resultsHeader = 'No objects found';
jQuery(completionList).prepend(
'<li class="listHeader">' + resultsHeader + '</li>');
}
Я также создал новый класс css для правильного отображения.Я использовал !important
, чтобы убедиться, что он переопределяет стиль mousover, добавленный из элемента управления AutoExtender.
.listHeader
{
background-color : #fafffa !important;
color : #061069 !important;
cursor : default !important;
}