Чтобы выборочно применять цвета фона к элементам автозаполнения, вам, вероятно, придется использовать JavaScript.
Поскольку все элементы из одной таблицы содержат строку ',Employee'
, а элементы из другой таблицы содержат ',NonEmployee'
, эту информацию можно использовать для стилизации.
Установить свойства:
OnClientShown="autoCompleteShow"
CompletionListItemCssClass="AutoCompleteExtender_CompletionListItem"
на AutoCompleteExtender
.
Внутри autoCompleteShow
мы определяем цвет фона элементов <li>
в соответствии с таблицей, из которой они получены:
<script type="text/javascript">
function autoCompleteShow() {
var elements = document.getElementsByClassName('AutoCompleteExtender_CompletionListItem');
for (var i = 0; i < elements.length; i++)
if (elements[i].innerHTML.search(",Employee") != -1)
elements[i].style.setProperty("background-color", "#4CC417", "!important");
else
elements[i].style.setProperty("background-color", "Red", "!important");
}
</script>
Рабочий демонстрационный код:
[WebForm1.aspx]
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AutoCompleteExtenderContextualItemBgColor.WebForm1" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.AutoCompleteExtender_CompletionListItem
{
color : White;
}
.AutoCompleteExtender_HighlightedItem
{
color : Black;
}
</style>
<script type="text/javascript">
function autoCompleteShow() {
var elements = document.getElementsByClassName('AutoCompleteExtender_CompletionListItem');
for (var i = 0; i < elements.length; i++)
if (elements[i].innerHTML.search(",Employee") != -1)
elements[i].style.setProperty("background-color", "#4CC417", "!important");
else
elements[i].style.setProperty("background-color", "Red", "!important");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="Server" />
<asp:TextBox runat="server" ID="myTextBox" Width="250" />
<asp:AutoCompleteExtender runat="server"
ID="myAutoCompleteExtender"
TargetControlID="myTextBox"
ServicePath="AutoComplete.asmx"
ServiceMethod="GetCompletionList"
CompletionListItemCssClass="AutoCompleteExtender_CompletionListItem"
CompletionListHighlightedItemCssClass="AutoCompleteExtender_HighlightedItem"
OnClientShown="autoCompleteShow">
</asp:AutoCompleteExtender>
</div>
</form>
</body>
</html>
* * 1 022 [AutoComplete.asmx (разметки)]
<%@ WebService
Language="C#"
CodeBehind="~/App_Code/AutoComplete.cs"
Class="AutoComplete" %>
[~ / App_Code / AutoComplete.cs]
using System;
using System.Collections.Generic;
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoComplete : WebService
{
public AutoComplete()
{
}
[WebMethod]
public string[] GetCompletionList(string prefixText, int count)
{
if (count == 0)
{
count = 10;
}
List<string> items =
new List<string>() { "test1 ,Employee Hgeurg Jfheuf",
"test2 ,NonEmployee Uheure Iueir",
"test3 ,Employee Jufhwiufhiwe Leroe",
"test5 ,Employee Cgrejg Jehure Byer",
"test7 ,NonEmployee Qewrerffx Yegr" };
return items.ToArray();
}
}