C# Asp.net从文本框搜索数据库,输入特定字符串时除外
我创建了一个asp.net应用程序,用户可以在文本框中输入名称来搜索lotus notes数据库。无论何时输入一个名字,比如说“Robert”,隐藏的代码都会搜索数据库,并在gridview中显示所有结果(所有条目都称为“Robert”) 问题是我的数据库大约有17万多个条目。因此,同时加载它们是不可能的。加载页面需要很长时间,然后浏览器才会超时 所以我用一种简单的方法解决了这个问题。我对我的应用程序进行了编码,这样当它已经加载了2000个条目时,它就会停止加载条目。这样,页面的显示速度要快得多 但是,如果我在文本框中键入“Robert”,然后单击ok按钮,则不会显示任何条目。因为应用程序不会遍历数据库中超过2000个条目 所以我想了个办法。每当用户在文本框中输入“[2000]”时,页面将再次加载,但这次它将在“[](即2000)之间指定的索引之后开始加载条目。这样,我们就能够访问远远超过2000年上限的条目,而不会影响页面显示时间 但有一个问题。每当我在文本框中输入“[2000]”,应用程序就会在数据库中搜索名为“[2000]”的条目。有没有办法在研究中加入例外情况?比如当我输入一个特定的字符串时,它会处理不同的代码,而不是在数据库中查找该文本 我现在没有任何代码可以给你,因为我在家写这篇文章,代码在我的办公室。如果你真的需要一些代码,我明天会看看我能做些什么。但是如果有人能给我提供一个代码示例,我会非常感激 谢谢使用C# Asp.net从文本框搜索数据库,输入特定字符串时除外,c#,asp.net,database,lotus,C#,Asp.net,Database,Lotus,我创建了一个asp.net应用程序,用户可以在文本框中输入名称来搜索lotus notes数据库。无论何时输入一个名字,比如说“Robert”,隐藏的代码都会搜索数据库,并在gridview中显示所有结果(所有条目都称为“Robert”) 问题是我的数据库大约有17万多个条目。因此,同时加载它们是不可能的。加载页面需要很长时间,然后浏览器才会超时 所以我用一种简单的方法解决了这个问题。我对我的应用程序进行了编码,这样当它已经加载了2000个条目时,它就会停止加载条目。这样,页面的显示速度要快得多
和web服务将数据加载到页面init本身
以下是一个例子:
<asp:TextBox ID="txt1" MaxLength="80" class="form-control" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txt1" ServiceMethod="returntxt1Data"
MinimumPrefixLength="1" CompletionInterval="0" EnableCaching="false" OnClientItemSelected="ItemSelected">
</ajaxToolkit:AutoCompleteExtender>
然后创建一个Web服务来相应地显示自动完成
[System.Web.Services.WebMethod]
public static List<string> returntxt1Data(string prefixText)
{
List<string> newlist1 = new List<string>();
foreach (string a in List1)
{
if (a.ToUpper().Contains(prefixText.ToUpper()))
{
newlist1.Add(a);
}
}
return newlist1;
}
[System.Web.Services.WebMethod]
公共静态列表返回TXT1DATA(字符串前缀EXTEXT)
{
List newlist1=新列表();
foreach(列表1中的字符串a)
{
如果(a.ToUpper().Contains(prefixText.ToUpper()))
{
新列表1.添加(a);
}
}
返回newlist1;
}
您的逻辑也很麻烦您的代码。要使用关键字搜索数据库,您应该执行以下操作。
我以前没有使用过LotusNote,所以一般的算法是
public static List<string> List1= new List<string>();
protected void Page_Init(object sender, EventArgs e)
{
List1= LoadData(); //one time load data from database.
}
[System.Web.Services.WebMethod]
public static List<string> returntxt1Data(string prefixText)
{
List<string> newlist1 = new List<string>();
foreach (string a in List1)
{
if (a.ToUpper().Contains(prefixText.ToUpper()))
{
newlist1.Add(a);
}
}
return newlist1;
}