gpt4 book ai didi

c# - keyup 事件调用数据库函数并填充列表框

转载 作者:行者123 更新时间:2023-11-30 18:24:57 25 4
gpt4 key购买 nike

我在 ASP.NET 中有一个网页,代码如下,Default.aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="SearchHandler.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="search" runat="server"></asp:TextBox>
<asp:ListBox ID="listbox" runat="server" SelectionMode="Multiple"></asp:ListBox>
</form>
</body>
</html>

在我的 SearchHandler.js 中,我有这段代码:

$(document).ready(function () {
$('#search').keyup(function () {
//..do something here and populate listbox from database query result.
//..call C# function GetItems(), passing input as parameter and use to populate ListBox.
});
});

Functions.cs 中:

public class Functions
{
Database db = new Database();
public List<string> GetItems(string searchinput)
{
List<string> items = db.DoSomething(searchinput);
return items;
}
}

抱歉,我对此很陌生,但我如何完成上面的代码来填充同一页面上的列表框?基本上,每次用户在文本框中“键入”时,列表框都会刷新其内容。我想从 Functions.cs 类文件调用 C# 函数 GetItems()

新编辑:

基本上 GetItems() 需要一个键输入,每次按下一个键时,它都会触发数据库查询以检索相关记录。我有一个如下表(例如):

TableA
Name Country
Tom England
Bill USA
John Australia
Jim China
Harry Belgium
Johnathan France

因此,当有人在搜索框中输入“John”时,“Australia”和“France”将出现在列表框中。

SELECT Country FROM TableA WHERE Name LIKE '%John%'

编辑 21/06/12:如果我不使用 KeyUp 事件而是使用按钮事件,这是否会成为更好的方案?

最佳答案

我的第一 react 是不要这样做。每次有人在列表中输入字母时进行数据库调用对于您的数据库访问来说是非常昂贵的,并且会拖累您的性能。即使您使用 ajax 调用 - 也无法在可行的时间内获得响应。所以我会给你一些广泛的建议:

  1. 可以有多少条目?你能把它们加载到一个 JS 数组中,然后在 JS 中搜索它们吗?可能不是,否则您不需要执行此过程。

  2. 一次从数据库中获取列表,并将其存储为序列化对象。然后在该对象中搜索相关选项。在网站初始化时加载此数据。

  3. 输入一个字符(或 2 个字符,具体取决于您的数据)后,执行 ajax 调用以获取完整的相关选项列表。从那时起,在 JS 中使用此列表根据进一步的输入进行限制。

调整它直到它工作正常。如果需要,我可以提供有关其中任何特定部分的更多详细信息。

根据更多细节进行编辑。

我建议您在第一次按键时加载与该单个字符相关的所有条目。从那里开始,您在加载的列表中搜索匹配项,从那里缩小范围。

您应该启动一个 ajax 查询以在第一时间获取所有引用,并且在查询返回之前不对这些条目执行任何其他操作。

您可能还想在应用程序加载时将整个列表加载到内存中,并在需要时获取其中的一个子集。可能,每个初始字符取 26 个条目,但这可能是这个大小的 OTT。这可能取决于您从数据库调用和选择中获得的性能。

这相当复杂,但应该会为您生成一个满足您需要的响应界面。

关于c# - keyup 事件调用数据库函数并填充列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com