Masalah saya adalah bahwa pengguna akhir akan mulai mengetik di kotak teks dan menerima saran pelengkapan otomatis (ACP) dan memperbarui kontrol panggilan jika saran dipilih karena ACP dirancang secara default. Namun, saya juga perlu memperbarui beberapa kontrol lainnya (kotak teks, DropDowns, dll ...) dengan data khusus untuk pilihan pengguna akhir. Saya telah mencoba mencari solusi elegan untuk masalah ini dan saya merasa solusi yang saya kembangkan layak untuk dibagikan dan semoga akan menghemat waktu Anda.
WebMethod (SampleWM.aspx):
TUJUAN:
- Untuk merekam hasil Prosedur Tersimpan SQL Server dan mengembalikannya sebagai String JSON ke AJAX Caller
CATATAN:
- Data.GetDataTableFromSP () - Adalah fungsi kustom yang mengembalikan DataTable dari hasil Stored Prosedur
- <System.Web.Services.WebMethod (EnableSession: = True)> _
- Fungsi Umum Bersama GetAutoCompleteData (String ByVal QueryFilterAs) Sebagai String
//Call to custom function to return SP results as a DataTable
// DataTable will consist of Field0 - Field5
Dim params As ArrayList = New ArrayList
params.Add("@QueryFilter|" & QueryFilter)
Dim dt As DataTable = Data.GetDataTableFromSP("AutoComplete", params, [ConnStr])
//Create a StringBuilder Obj to hold the JSON
//IE: [{"Field0":"0","Field1":"Test","Field2":"Jason","Field3":"Smith","Field4":"32","Field5":"888-555-1212"},{"Field0":"1","Field1":"Test2","Field2":"Jane","Field3":"Doe","Field4":"25","Field5":"888-555-1414"}]
Dim jStr As StringBuilder = New StringBuilder
//Loop the DataTable and convert row into JSON String
If dt.Rows.Count > 0 Then
jStr.Append("[")
Dim RowCnt As Integer = 1
For Each r As DataRow In dt.Rows
jStr.Append("{")
Dim ColCnt As Integer = 0
For Each c As DataColumn In dt.Columns
If ColCnt = 0 Then
jStr.Append("""" & c.ColumnName & """:""" & r(c.ColumnName) & """")
Else
jStr.Append(",""" & c.ColumnName & """:""" & r(c.ColumnName) & """")
End If
ColCnt += 1
Next
If Not RowCnt = dt.Rows.Count Then
jStr.Append("},")
Else
jStr.Append("}")
End If
RowCnt += 1
Next
jStr.Append("]")
End If
//Return JSON to WebMethod Caller
Return jStr.ToString
JQuery AutoComplete (AutoComplete.aspx):
- TUJUAN:
- Lakukan Permintaan Ajax ke WebMethod dan kemudian tangani responsnya
$(function() {
$("#LookUp").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "SampleWM.aspx/GetAutoCompleteData",
dataType: "json",
data:'{QueryFilter: "' + request.term + '"}',
success: function (data) {
response($.map($.parseJSON(data.d), function (item) {
var AC = new Object();
AC.label = item.Field0;
AC.value = item.Field1;
AC.FirstName = item.Field2;
AC.LastName = item.Field3;
AC.Age = item.Field4;
AC.Phone = item.Field5;
return AC
}));
}
});
},
minLength: 3,
select: function (event, ui) {
$("#txtFirstName").val(ui.item.FirstName);
$("#txtLastName").val(ui.item.LastName);
$("#ddlAge").val(ui.item.Age);
$("#txtPhone").val(ui.item.Phone);
}
});
});