以下是使用webservice填充自动填充文本框的代码。我正在获取两个数据库字段,一旦我从列表中选择一个项目,相关费率就显示在另一个文本框中。而不是获得ServiceId我得到费率字段。我如何获得ServiceId值请帮助我。提前感谢你。
.aspx代码
<asp:HiddenField ID="hfServiceId" runat="server" />
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:TextBox ID="txtRate" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Insert"/>
我的网络服务代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetServices(string prefix)
{
List<string> customers = new List<string>();
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager
.ConnectionStrings["conString"].ConnectionString;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select ServiceName, ServiceId,Rate from Service where " +
"ServiceName like @SearchText + '%'";
cmd.Parameters.AddWithValue("@SearchText", prefix);
cmd.Connection = conn;
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
customers.Add(string.Format("{0}-{1}-{2}", sdr["ServiceName"], sdr["ServiceId"], sdr["Rate"]));
}
}
conn.Close();
}
return customers.ToArray();
}
}
java脚本代码
$(function () {
$("[id$=txtTest]").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/AutocompleteSingle.asmx/GetServices") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1],
val: item.split('-')[2]
}
}))
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
},
select: function (e, i) {
$("[id$=hfServiceId]").val(i.item.val);
$("[id$=txtRate]").val(i.item.val);
},
minLength: 1
});
});
代码背后:
protected void Insert(object sender, EventArgs e)
{
string serviceId = Request.Form[hfServiceId.UniqueID]; // getting rate field value
}
答案 0 :(得分:3)
这里
return {
label: item.split('-')[0],
val: item.split('-')[1],
val: item.split('-')[2]
}
您创建一个具有两个具有相同名称的属性的对象,使用第二个值重写第一个的值。尝试以不同的方式命名它们。