Tuesday, April 17, 2012

JQuery Autocomplete Key/Value

This solution with key/value with cascading Auto complete with web service.

This JQuery Script

<script type="text/javascript"> 
    $(document).ready(function () { 
      $("[id$='txRequesterName']").attr('disabled', true); 
      $("[id$='txAssetName']").attr('disabled', true); 
      $("[id$='txCompanyName']").autocomplete({ 
        source: function (request, response) { 
          $.ajax({ 
            type: "POST", 
            url: "WebService.asmx/GetCompany", 
            dataType: "json", 
            data: "{\"companyName\":\"" + request.term + "\"}", 
            contentType: "application/json; charset=utf-8", 
            success: function (data) { 
              response($.map(eval(data.d), function (item) { 
                return { 
                  label: item.label, 
                  value: item.label, 
                  id: item.value 
                } 
              })); 
            } 
          }) 
        }, 
        minLength: 1, 
        select: function (event, ui) { 
          $("[id$='txCompanyID']").val(ui.item.id); 
          $("[id$='txRequesterName']").attr('disabled', false); 
        }, 
        change: function (event, ui) { 
          $("[id$='txRequesterName']").val(''); 
          $("[id$='txRequesterName']").attr('disabled', false); 
        } 
      }); 


 
      $("[id$='txRequesterName']").autocomplete({ 
        source: function (request, response) { 
          $.ajax({ 
            type: "POST", 
            url: "WebService.asmx/GetRequesterByCompany", 
            dataType: "json", 
            data: "{\"requesterName\":\"" + request.term + "\",\"companyID\":\"" + $("[id$='txCompanyID']").val() + "\"}",
 
            contentType: "application/json; charset=utf-8", 
            success: function (data) { 
              response($.map(eval("[" + data.d + "]"), function (item) { 
                return { 
                  label: item, 
                  value: item 
                } 
              })); 
            } 
          }) 
        }, 
        minLength: 1, 
        select: function (event, ui) { 
          $("[id$='txAssetName']").attr('disabled', false); 
        } 
      }); 
    }); 
 
 
    </script>



This is Web service:


<WebMethod()> _
  Public Function GetCompany(ByVal companyName As String) As String
    Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer
    Dim companyArray As New ArrayList
    Dim companyAPI As New CompanyBLL
    Dim company As HelpDesk.CompanyDataTable = companyAPI.GetCompanyByCompanyName(companyName)
 
    Try
      For i As Integer = 0 To company.Rows.Count - 1
        Dim cp As New Company()
        cp.label = company.Rows(i).Item("Name")
        cp.value = company.Rows(i).Item("CompanyID")
        companyArray.Add(cp)
      Next
 
      'Removes the extra ":"
      'sbCompany = sbCompany.Remove(sbCompany.Length - 1, 1)
    Catch ex As Exception
      'Setup a breakpoint here 
      'to verify any exceptions raised.
      Dim exp As String = ex.ToString()
    End Try
    Return serializer.Serialize(companyArray)
  End Function
 
  <WebMethod()> _
  Public Function GetRequesterByCompany(ByVal requesterName As String, ByVal companyID As Integer) As String
    Dim sbRequester As New StringBuilder()
    Dim requesterAPI As New RequesterBLL
    'Dim companyAPI As New CompanyBLL
    'Dim company As HelpDesk.CompanyDataTable = companyAPI.GetCompanyByCompanyName(companyName)
    'Dim companyID As Integer
 
    'If company.Rows.Count >= 1 Then
    'companyID = company.Rows(0).Item("CompanyID")
    'Else
    'companyID = 0
    'End If
 
    Dim requester As HelpDesk.RequesterDataTable = requesterAPI.GetRequesterByCompanyID(companyID, requesterName)
 
    Try
      For i As Integer = 0 To requester.Rows.Count - 1
        sbRequester.AppendFormat("'{0}',", requester.Rows(i).Item("Name"))
      Next
 
      'Removes the extra ":"
      sbRequester = sbRequester.Remove(sbRequester.Length - 1, 1)
    Catch ex As Exception
      'Setup a breakpoint here 
      'to verify any exceptions raised.
      Dim exp As String = ex.ToString()
    End Try
    Return sbRequester.ToString()
  End Function
End Class
 
Public Class Company
  Public label As String
  Public value As String
End Class

1 comment: