如果酒店表很小,则拉出所有记录并呈现为 javascript 数组对象。
<script src="Scripts/jquery-1.9.1.min.js"></script>
<input id="txtID" type="text" runat="server" />
<input id="txtName" type="text" runat="server" />
<script type="text/javascript">
$(function () {
$('#<%= txtID.ClientID%>').on('change keyup', function () {
var result = $.grep(hotels, function (e) { return e.id == $('#<%= txtID.ClientID%>').val(); });
var output;
if (result.length == 0) {
// not found
output = 'Hotel not found!!!';
} else if (result.length == 1) {
// access the foo property using result[0].foo
output = result[0].name;
} else {
// multiple items found
output = 'Multiple hotels found!!!';
}
$('#<%= txtName.ClientID%>').val(output);
});
});
</script>
在后面的代码中,您需要做的是将记录呈现为序列化的 JSON 字符串:
Private Sub rendertHotelList()
Dim dt As DataTable = ... ' read hotel data from db into datatable
Dim hotels = From row As DataRow In dt.AsEnumerable
Select id = CStr(row!EmployeeID), name = row!LastName
Dim jss As New Script.Serialization.JavaScriptSerializer
Dim s As String = jss.Serialize(hotels)
ClientScript.RegisterClientScriptBlock(GetType(Page), "hotel_array", "var hotels = " & s, True)
End Sub
这样,当用户输入 id 值时,不需要回发到服务器。
但是,如果表包含大量记录并且您需要保持页面大小尽可能小,请使用 ajax 请求来检索名称。