【问题标题】:ASP.NET Textbox autocomplete get different table column valueASP.NET 文本框自动完成获取不同的表列值
【发布时间】:2015-03-29 11:48:32
【问题描述】:

情况是这样的: db 表是这样的:

所需的 UI 是这样的:

这可能吗?我想自动完成,直到全名,然后,当用户输入时,例如,john,所以,所有名称为 john 的客户都将显示分支名称附加数据,如果用户在弹出窗口中选择其中一行,它将更新cif编号。 例子: -约翰·多伊 |米吉根分公司 -约翰·亚历克斯 |开罗分公司 -大卫约翰 |加拿大分公司

到目前为止,我在 asp.net 上搜索弹出式自动完成功能,它只是在数据库中查找一列,并更新相同的文本字段。我需要它来更新多个文本字段、客户名称和 cif 编号。或者,只是 CIF 编号,但自动完成功能会查找客户名称和分公司名称。

非常感谢。

【问题讨论】:

  • 是的,你能做到吗?加入你的两列 fullnamebranch name 并使用它来绑定 autocomplete 然后当用户选择更新 UI 上的所有其他字段时。
  • 先生,有没有讨论相同案例的教程?
  • 首先我不是先生,我不确定是否有教程,但你可以开始学习它,如果有问题可以来这里。
  • 我认为显示 CIF - 名称 - 分支格式很容易。我可以使用这个:aspdotnet-suresh.com/2011/05/… 但是,如果我选择其中一个结果并更新客户 cif 文本字段,该怎么办?选择后没有事件...
  • 我以为您在使用jquery 自动完成功能,因为您使用Jquery 对其进行了标记,但如果您使用的是 ajaxtoolkits 控件,请在选择后尝试在文本框上强制执行 textchange 事件。

标签: jquery asp.net autocomplete


【解决方案1】:

要强制选择文本事件,您可以订阅TextChanged 事件并使用下面的函数作为itemSelected 扩展器的客户端事件OnClientItemSelected="autoCompleteEx_ItemSelected" 的处理程序:

<script type="text/javascript">
 function autoCompleteEx_ItemSelected(sender, args) {
      __doPostBack(sender.get_element().name, "");
 }
</script>

您可能希望从目标文本框中删除 AutoPostBack="true"

您的回发事件将是

 protected void autoCompleteTextbox_ValueChanged(object sender, EventArgs e)
  {
    ///populate the form based on retrieved data
  } 

来自this 链接,您需要将两个字段加入为

    List<string> autocompleteList= new List<string>();
    for (int i = 0; i < dt.Rows.Count; i++)
    {
      autocompleteList.Add(dt.Rows[i]["FullName"].ToString()+"|"+dt.Rows[i]["BranchName"].ToString());
    }

将您的 OnClientItemSelected="autoCompleteEx_ItemSelected" 放入自动完成扩展程序中。

  <ajaxtoolkit:AutoCompleteExtender runat="server" 
    //other properties 
    OnClientItemSelected="autoCompleteEx_ItemSelected">
</ajaxtoolkit:autocompleteextender>

【讨论】:

  • 我应该把 OnClientItemSelected 放在哪里?在 标记处?我知道如何使用 jquery,但是,如果有更容易使用的工具,我想使用它。 jQuery 标签在 ms visual studio 中不易阅读。 Visual Studio 无法检测 jQuery 语法中的拼写错误。
  • __doPostBack(sender.get_element().name, "");这是否意味着我应该创建 __doPostBack 函数?如果是,在客户端还是服务器端?
  • __doPostBack() 被 asp 用来通过生成 javascript 代码来触发 postback 事件。我们使用相同的函数来强制页面上的回发,我们需要在后面的代码中编写事件。就像我在答案中提到的那样。所以这里__doPostBack(sender.get_element().name, ""); 将调用与sender.get_element().name 匹配的页面上的事件,因此如果此值为autoText,则事件后面的代码将为protected void autoText_ValueChanged(object sender, EventArgs e)
  • 对不起,那个示例代码正在使用 Web 服务。我没有使用网络服务。可以在后面使用通用代码吗?有没有使用后面代码的好例子,并且会在文本框上获得字符串值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2020-05-07
  • 2014-06-19
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
相关资源
最近更新 更多