koklimabc
используя jquery (лучший и простой), я делаю два типа методов,
Назначение на первом этапе загрузки документа (на стороне клиента) для пустых значений
$(документ).готово(функция(){
исходный = [""];
$("#Textbox"). автозаполнение
источник : исходный
});
});
Во-вторых использовать AJAX (не серверного), получить значение из документа.клавиша вверх() (не клавиша вниз)
$(document).keyup(function (e) {
var activecontrol = $(":focus").attr("Id");
var activetype = $(":focus").attr("type");
switch (activecontrol) {
case "ProductionSheetNo":
var JobNumberHolder = $("#ProductionSheetNo").val().toUpperCase();
$("#ProductionSheetNo").val(JobNumberHolder);
mixkeycode = null;
$.ajax({
type: "Post",
data: JSON.stringify(JobNumberHolder),
contentType: "application/json; charset=utf-8",
url: "/WebServices/RecordService.svc/GetJobNumber",
dataType: "json",
processData: true,
success: function (result) {
$("#ProductionSheetNo").autocomplete({
source: result
});
},
error: function (e) {
alert("Error Code:" + e.status + " on:" + e.statusText);
}
});
break;
создайте веб-сервис (. SVC), потому что источник на стороне клиента-это тип accept list & lt;string>;
[WebMethod]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
public List<String> GetJobNumberList(String JobNumberFromClient)
{
List<string> returnList = new List<string>();
/* Doing what whaever to fill content inside returnList */
return returnList;
}</string></string>
2-й метод, использующий асинхронную обратную передачу для обновления панели в основной форме или управления под
$(документ).клавиша вниз(),
Храните свой список строк в скрытых полях (прежде чем вы должны сериализовать его) в коде позади,
отправьте его клиенту с помощью scriptmanager.
декодируйте его с помощью JSON.parse() на стороне клиента.
клиентский
$(document).keydown(function (e) {
var keypresscode = e.keyCode;
switch (keypresscode) {
default:
var activecontrol = $(":focus").attr("Id");
if ( activecontrol == "TextBox")
{
__doPostBack('PrintControlUpdate');
/* PrintControl is your update panel on main form or user control */
}
break;
}
if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
{
var TargetControl = Request.Params.Get("__EVENTTARGET");
if (!String.IsNullOrEmpty(TargetControl))
{
switch(TargetControl)
{
case "PrintControlUpdate":
ScriptManager.RegisterStartupScript(this, this.GetType(), "InvokeJobFilter", "clientOnInvokeJobFilter('false')", true);
клиентский
<script type="text/javascript">
function clientOnInvokeJobFilter(ValidatePrint) {
$(function () {
var ValidatePrintHolder = JSON.parse(ValidatePrint);
var JobFilterListHandle = $("#<%= JobFilterListHiddenField.ClientID %>").val();
JobFilterListHandle = JSON.parse(JobFilterListHandle);
$("#<%= JobFilter.ClientID %>").autocomplete({
source: JobFilterListHandle
});
if (ValidatePrintHolder) {
InvokeClientPrint();
}
});
return;
}
</script>