下面是使用jQuery的帮助,为我工作的解决方案:
步骤1:SQL编写存储过程(接受一个输入参数)来检索数据库纸张名称(假设你使用SQL Server作为DBMS):
create proc [dbo].[spGetMatchingPaperIds]
@PaperId nvarchar(Whatever size)
as
begin
select PaperId from TableStoringYourPaperIds where PaperId like @PaperId + '%'
end
GO
步骤2:Web服务 创建Web服务(并将其命名为PaperSearchService.asmx或任何命名约定你遵循)和写,将查询您的DA功能tabase和检索文件名的列表,像这样:
[WebMethod]
public List<string> getPaperNames(string DeviceIdString)
{
List<string> paperNames = new List<string>();
string cs = ConfigurationManager.ConnectionStrings["YourConnectionStringToTheDatabase"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetMatchingPaperIds", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@PaperId", PaperId);
cmd.Parameters.Add(parameter);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
paperNames.Add(rdr["PaperId"].ToString());
}
}
return paperNames;
}
第3步:HTML标记 我假设你使用的是母版页所以这应该去里面你的内容占位符之一。
使用开发者工具来检查的jQuery的错误,则可能会在浏览器上按一下F12同时调试,并从CDN下载相关jQuery库,只是它包含在你的主网页,但我最后一次检查其jquery-1.7.min.js
- 只需再检查一次。这个前面提到的库具有自动完成功能,否则它将无法工作。
<script type="text/javascript">
$(function() {
$('#<%= tbSearchContracts.ClientID %>').autocomplete({
source: function (request, response) {
$.ajax({
url: "PaperSearchService.asmx/getPaperNames",
data: "{ 'PaperId': '" + request.term + "' }",
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
response(data.d);
},
error: function (result) {
alert('There is a problem processing your request');
}
});
},
minLength: 0
});
});
//Below are some nice-to-have's:
function CreateWaterMark(defaultText, textBoxControl) {
if (textBoxControl.value.length == 0) {
textBoxControl.style.color = "gray";
textBoxControl.value = defaultText;
}
}
function ClearWaterMark(defaultText, textBoxControl) {
if (textBoxControl.value == defaultText) {
textBoxControl.style.color = "black";
textBoxControl.value = "";
}
}
</script>
<asp:TextBox ID="tbSearchContracts" CssClass="whatever styling you have used" onblur="CreateWaterMark('Search Paper Names Here', this);" onfocus="ClearWaterMark('Search Paper Names Here', this);" onkeyup="hasPendingChanges()" Text="Search Paper Names Here" runat="server"></asp:TextBox>
您的'dgvPapers.Update();'行会不断地访问数据库,从而严重影响您的性能。 –