使用c#从ASP.NET Web表单中的数据库中获取数据?
我正在修改另一个程序员使用ASP.NET Web窗体和C#开发的现有应用程序 我必须在一个简单的文本框中添加自动完成功能。当用户开始在文本框中输入内容时,文本框应根据数据库中存储的数据显示建议。建议必须仅基于前缀(已输入单词的开头部分)使用c#从ASP.NET Web表单中的数据库中获取数据?,c#,ajax,webforms,C#,Ajax,Webforms,我正在修改另一个程序员使用ASP.NET Web窗体和C#开发的现有应用程序 我必须在一个简单的文本框中添加自动完成功能。当用户开始在文本框中输入内容时,文本框应根据数据库中存储的数据显示建议。建议必须仅基于前缀(已输入单词的开头部分) 我发现了许多基于的示例,但它是基于从Web服务获取数据的。完成这项任务的步骤、所需方法和操作是什么 你发布的链接几乎解释了所有需要做的事情。跟着 如果需要传递一些附加参数,请检查示例 步骤 1.将Textbox和Ajax Extender添加到页面,并将目标id
我发现了许多基于的示例,但它是基于从Web服务获取数据的。完成这项任务的步骤、所需方法和操作是什么 你发布的链接几乎解释了所有需要做的事情。跟着 如果需要传递一些附加参数,请检查示例 步骤 1.将Textbox和Ajax Extender添加到页面,并将目标id指定为textboxid。为Extender指定web服务名称
2.按照上面的链接实现webservice,并在浏览器中进行测试。
3.在webservice中编写您想要检索数据的方式。您将返回一个字符串[] 您甚至可以使用webmethod属性来执行以下常规方法检查,而不是创建webservice
您只需在页面codebehind上定义一个方法,用[WebMethod]属性修饰它,然后在下拉扩展程序的ServiceMethod属性上设置它。
方法必须实现检索/过滤结果的逻辑,其签名必须与示例匹配(例如:public string[]MyMethod(string prefixText,int count))。先决条件是拥有“AjaxControlToolKit” 首先,我们需要将文本框放在updatepanel中,这样可以进行部分回发,从而消除整个页面的重新加载。 使用ajax AutoCompleteXtender,我们可以使用它调用具有DB调用的服务方法,DB调用将获取数据并填充文本框
<asp:UpdatePanel ID="pnlAcct" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtAcctNum"></asp:TextBox>
<asp:AutoCompleteExtender ID="AutoCompleteExtenderAccount" runat="server" MinimumPrefixLength="1" ServiceMethod="GetSourceAccount" ServicePath="~/AutoComplete/AutoComplete.asmx"
TargetControlID="txtAcctNum" Enabled="True" CompletionSetCount="20" CompletionInterval="1000"
EnableCaching="true">
</asp:AutoCompleteExtender>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtAcctNum" />
</Triggers>
</asp:UpdatePanel>
可以通过添加WebService(.asmx文件)并在.asmx.cs文件中写入以下代码来完成服务调用。字符串中可用的任何数据都将显示在文本框下方
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] GetSourceAccount(string prefixText, int count)
{
List<string> lstSimilarSource = new List<string>();
//Service call and populating the string
lstSimilarSource = Autocomplete.GetSimilarSource(prefixText, "ACCOUNT");
return lstSimilarSource.ToArray();
}
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
公共字符串[]GetSourceAccount(字符串前缀,整数计数)
{
List lstSimilarSource=新列表();
//服务调用和填充字符串
lstSimilarSource=Autocomplete.GetSimilarSource(前缀为“ACCOUNT”);
返回lstmilarsource.ToArray();
}
谢谢您的回答。有没有办法使用Web服务?例如,通过使用JSon调用MVC中发生的方法?@CiccioMiami检查我编辑的答案,我向其中添加了WebMethod部分。