autocomplete
テキストボックスを使用しており、Webサービスのasmxファイルからデータを取得しようとしています。私はデータを取得していますが、同じデータが繰り返されています。私は何が起こっているのか分かりません。ここに私のaspx
ファイルされる:多値オートコンプリートのWebサービスからJsonデータを取得する
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Emp_Autocomplete.aspx.cs" MasterPageFile="~/Site.Master" Inherits="AutoCompleteText.Emp_Autocomplete" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script language="javascript" type="text/javascript">
$(function() {
$('#<%=txtManagerName.ClientID%>').autocomplete({
source: function (request, response) {
$.ajax({
url: "ManagerService.asmx/Get_Employees",
data: "{ 'Condition':'" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
Name: data.d.Name,
EmployeeID: data.d.EmployeeID,
DOB: data.d.DOB,
json: data
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
focus: function (event, ui) {
$('#<%=txtManagerName.ClientID%>').val(ui.item.Name);
return false;
},
select: function (event, ui) {
$('#<%=txtManagerName.ClientID%>').val(ui.item.Name);
return false;
},
}).data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li>")
.append("<a><bold>Name:" + item.Name + "</bold><br>EmployeeID: " + item.EmployeeID + "<br>DOB: " + item.DOB + "</a>")
.appendTo(ul);
};
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h3>Multival autocomplete</h3>
<div>
<asp:TextBox ID="txtManagerName" runat="server"></asp:TextBox>
<div>
<div><b>Name:</b> <asp:Label ID="lblName" runat="server"></asp:Label></div>
<div><b>EmployeeID:</b> <asp:Label ID="lblEmployeeID" runat="server"></asp:Label></div>
<div><b>DOB:</b> <asp:Label ID="lblDOB" runat="server"></asp:Label></div>
</div>
</div>
</asp:Content>
ここでは、ASMXファイルです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace AutoCompleteText
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class ManagerService : System.Web.Services.WebService
{
public class Employee
{
public string Name;
public string EmployeeID;
public string DOB;
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Employee Get_Employees(string Condition)
{
Employee objEmployee = new Employee();
using (SqlConnection con = new SqlConnection(DataAccess.DataConnection.MyConnection.StrConn))
{
SqlCommand cmd = new SqlCommand("dbo.SEL_Employee_Info", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@Condition", Condition);
cmd.Parameters.Add(parameter);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
objEmployee.Name = rdr["Name"].ToString();
objEmployee.EmployeeID = rdr["EmployeeID"].ToString();
objEmployee.DOB = rdr["DOB"].ToString();
}
rdr.Close();
con.Close();
}
return objEmployee;
}
}
}
私は77を言う入力したとき、私はすべての従業員を取得する必要があることを表示するために画像を追加しました格納されたプロクシからDOBに77がある
しかし、私は最後の従業員だけを取得しています。なぜそれが分かりませんか?マイクロソフトの勧告として
textBoxがアルファベットと数値の両方を扱うようにしますか? –
@Adeelレコードセットをループする際に、値を正しく取得しています。最後のレコードのみが複数回表示されます。私は保存されたproc結果を表示するためにpngファイルを添付しようとしましたが、表示されているものの、アップロードされなかったようです。 – SilverFish