मेरा मुद्दा यह था कि अंतिम उपयोगकर्ता एक टेक्स्टबॉक्स में टाइप करना शुरू कर देंगे और स्वतः पूर्ण (ACP) सुझाव प्राप्त करेंगे और कॉलिंग कंट्रोल को अपडेट करेंगे यदि कोई सुझाव डिफ़ॉल्ट रूप से ACP चुना गया हो। हालाँकि, अंत उपयोगकर्ता के चयन के लिए विशिष्ट डेटा के साथ मुझे कई अन्य नियंत्रण (टेक्स्टबॉक्स, ड्रॉपडाउन, आदि ...) को भी अपडेट करने की आवश्यकता थी। मैं इस मुद्दे का एक सुरुचिपूर्ण समाधान निकालने की कोशिश कर रहा हूं और मुझे लगता है कि जो मैंने विकसित किया है वह साझा करने के लायक है और उम्मीद है कि आप कम से कम हर समय बचाएंगे।
WebMethod (SampleWM.aspx):
उद्देश्य:
- SQL सर्वर संग्रहीत कार्यविधि परिणामों को कैप्चर करने के लिए और उन्हें AJAX कॉलर को JSON स्ट्रिंग के रूप में लौटाएं
टिप्पणियाँ:
- Data.GetDataTableFromSP () - एक कस्टम फ़ंक्शन है जो किसी डेटा प्रक्रिया को एक संग्रहीत कार्यविधि के परिणामों से लौटाता है
- <System.Web.Services.WebMethod (सक्षम करें: = सत्य)> _
- सार्वजनिक साझा फ़ंक्शन GetAutoCompleteData (ByVal QueryFilterAs स्ट्रिंग) स्ट्रिंग के रूप में
//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.aspx):
- उद्देश्य:
- WebMethod को अजाक्स अनुरोध निष्पादित करें और फिर प्रतिक्रिया को संभालें
$(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);
}
});
});