Introduction
This articles describes the Auto Suggested TextBox in the Web API. Type a letter in the TextBox and press the Enter key. It then displays an Autosuggest list.
The following is the procedure for creating the application.
Step 1
Create a Web API application.
- Start Visual Studio 2012.
- From the start window Select "Installed" -> "Visual C#" -> "Web".
- Select "ASP.NET MVC4 Web Application" and click on the "Ok" button.
- From the "MVC4 Project" window select "Web API".
- Click on the "OK" button.
Step 2
Now select the "HomeController".
- In the "Solution Explorer".
- Expand the Controller folder.
- Select the "HomeController".
Add the following code:
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.Web.Mvc;
- namespace AutosuggestTextAPI.Controllers
- {
- public class HomeController : Controller
- {
- public ActionResult Index()
- {
- return View();
- }
- public DataTable Items()
- {
- DataTable cityname = new DataTable();
- cityname.Columns.Add("ID", typeof(int));
- cityname.Columns.Add("Level", typeof(string));
- cityname.Columns.Add("value", typeof(string));
- cityname.Columns.Add("word", typeof(string));
- DataRow dr = cityname.NewRow();
- dr["ID"] = 1;
- dr["Level"] = "2";
- dr["value"] = "Kanpur";
- dr["word"] = "KNP";
- cityname.Rows.Add(dr);
- dr = cityname.NewRow();
- dr["ID"] = 2;
- dr["Level"] = "3";
- dr["value"] = "Lucknow";
- dr["word"] = "LKW";
- cityname.Rows.Add(dr);
- dr = cityname.NewRow();
- dr["ID"] = 3;
- dr["Level"] = "4";
- dr["value"] = "Delhi";
- dr["word"] = "DLH";
- cityname.Rows.Add(dr);
- dr = cityname.NewRow();
- dr["ID"] = 3;
- dr["Level"] = "5";
- dr["value"] = "Banaras";
- dr["word"] = "BNA";
- cityname.Rows.Add(dr);
- dr = cityname.NewRow();
- dr["ID"] = 4;
- dr["Level"] = "6";
- dr["value"] = "Banglore";
- dr["word"] = "BNG";
- cityname.Rows.Add(dr);
- return cityname;
- }
- public ActionResult CityAutoSuggestByName(string autotext)
- {
- autotext = (autotext == null) ? "" : autotext;
- return Content(JsonForAutoSuggestforName(Items().Select("value LIKE '%" + autotext + "%'")), "application/json");
- }
- static string loc;
- public static string JsonForAutoSuggestforName(DataRow[] datarow)
- {
- StringBuilder jsonBuilder = new StringBuilder();
- jsonBuilder.Append("[");
- for (int a = 0; a < datarow.Length; a++)
- {
- jsonBuilder.Append("{\"ID\": \"");
- jsonBuilder.Append(datarow[a][0].ToString());
- jsonBuilder.Append("\",");
- jsonBuilder.Append("\"Level\": \"");
- loc = datarow[a][2].ToString().Replace("\\", "\\\\");
- jsonBuilder.Append(loc.Replace("\"", "\\\""));
- jsonBuilder.Append("\",");
- jsonBuilder.Append("\"value\": \"");
- datarow[a][2].ToString().Replace("\\", "\\\\");
- jsonBuilder.Append(loc.Replace("\"", "\\\""));
- jsonBuilder.Append("\",");
- jsonBuilder.Append("\"word\": \"");
- loc = datarow[a][3].ToString().Replace("\\", "\\\\");
- jsonBuilder.Append(loc.Replace("\"", "\\\""));
- jsonBuilder.Append("\",");
- jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
- jsonBuilder.Append("},");
- }
- jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
- jsonBuilder.Append("]");
- string jason = jsonBuilder.ToString();
- return jsonBuilder.ToString();
- }
- }
- }
Step 3
Now write some HTML code in the "index.cshtml" file. This file exists:
Add the following code:
- @{ ViewBag.Title = "Using AutoSuggest on Enter Key"; }
- <table>
- <tr>
- <td style="width:320px">
- @Html.TextBox("CityName", "", new { @style = "width:320px;outline: 2px solid #FBEC88" })
- </td>
- </tr>
- </table>
- @section JavaScript {
- <script type="text/javascript">
- $(document).ready(function () {
- $("#CityName").autocomplete({
- search: function (event, ui) {
- var k = event.keyCode;
- if (k == 13) {
- return true;
- }
- else
- return false;
- },
- source: function (request, response) {
- $.ajax({
- url: '@Url.Action("CityAutoSuggestByName")',
- data: { autotextext: request.term },
- dataType: 'json',
- type: 'POST',
- success: function (data) {
- response(data);
- }
- });
- },
- select: function (event, ui) {
- $('#CityName').val(ui.city ? ui.city.value : 'Select');
- }
- });
- });
- </script>
- }
Step 4
Select the "_Layout.cshtml" file.
Add the following code:
- <!DOCTYPE html>
- <html>
- <head>
- <title>@ViewBag.Title</title>
- <link href="@Url.Content("~/Content/site.css")" rel="stylesheet" type="text/css" />
- <link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div class="page">
- <div id="header">
- <div id="title">
- <h1>For AutoSuggested List Press Enter</h1>
- </div>
- </div>
- <div id="main">
- @RenderBody()
- <div id="footer">
- </div>
- </div>
- </div>
- <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
- <script src="@Url.Content("~/Scripts/jquery-ui-1.8.7.min.js")" type="text/javascript"></script>
- @RenderSection("JavaScript", false)
- </body>
- </html>
Step 5
Execute the application: