- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 AjaxControlToolkit,并将其自动完成扩展绑定(bind)到文本框。
使用原始代码,我可以让它完美地工作。我的要求已经从仅查询和发送一组数据发展到必须使用 key 发送该数据。
例如:
当用户输入一些文本时,查询会搜索 3 个表的可能性,然后发回所有结果。我现在想将这些结果绑定(bind)到它从中获取的表。
key 不必显示在扩展器上,只需显示值即可。
我的想法是将结果绑定(bind)到字典,然后循环遍历它以获取值(将值绑定(bind)到字符串 [] 以返回自动完成),然后使用键在另一个文本框中进行分配所选变量来自。
当前代码.aspx:
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtMainSearch" ServiceMethod="GetCompletionList" CompletionInterval="500" FirstRowSelected="True" CompletionListCssClass="completionList" CompletionListItemCssClass="listItem" CompletionListHighlightedItemCssClass="itemHighlighted"></ajaxToolkit:AutoCompleteExtender>
.cs
[WebMethod, ScriptMethod]
public static string[] GetCompletionList(string prefixText)
{
ArrayList srings = new ArrayList();
int counter = 0;
SqlConnection db = DataConn.SqlConnection();
db.Open();
SqlTransaction transaction = db.BeginTransaction();
Dictionary<string, string> dictionary = new Dictionary<string, string>();
try
{
SqlCommand command = new SqlCommand("[Table 1]" + prefixText + "[Var]", db, transaction);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
counter = counter + 1;
dictionary.Add("ItemOne", reader["something"].ToString());
}
}
command = new SqlCommand("[Table 2]", db, transaction);
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
counter = counter + 1;
dictionary.Add("ItemTwo", reader["something"].ToString());
}
}
transaction.Commit();
}
catch (SqlException)
{
transaction.Rollback();
dictionary.Add("Error", "Problem Getting Results");
}
if (counter == 0)
dictionary.Add("Error", "There are no users to display");
foreach (KeyValuePair<string, string> valuePair in dictionary)
{
srings.Add(valuePair.Value);
}
return null; //This isnt really null... Just accidently deleted the code
}
最佳答案
主要问题是您试图将重复键添加到字典中。使用 List<KeyValuePair<string, string>>
集合代替:
var values = new List<KeyValuePair<string, string>>();
// select data from first table
foreach (var id in Enumerable.Range(1,10))
{
values.Add(new KeyValuePair<string,string>("Table1_" + id.ToString(), Guid.NewGuid().ToString() );
}
//select data from the second table
foreach (var id in Enumerable.Range(1,10))
{
values.Add(new KeyValuePair<string,string>("Table2_" + id.ToString(), Guid.NewGuid().ToString() );
}
if(values.Count == 0)
{
values.Add(new KeyValuePair<string,string>("", "There are no users to display"));
}
return values.Select( pair => AutoCompleteExtender.CreateAutoCompleteItem(pair.Value, pair.Key)).ToArray();
请注意,项目的键是由源表名和键值本身生成的。
然后,在页面上添加到 AutoCompleteExtender OnClientItemSelected
客户端事件处理程序并在表单上添加隐藏字段以存储所选项目值:
<script type="text/javascript">
function itemSelected(sender, args) {
$get("<%= AutoCompleteSelectedValue.ClientID %>").value = args.get_value();
}
</script>
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtMainSearch"
ServiceMethod="GetCompletionList" CompletionInterval="500" FirstRowSelected="True"
CompletionListCssClass="completionList" CompletionListItemCssClass="listItem"
CompletionListHighlightedItemCssClass="itemHighlighted"
OnClientItemSelected="itemSelected">
<asp:HiddenField runat="server" ID="AutoCompleteSelectedValue" />
之后您可以从 AutoCompleteSelectedValue 隐藏字段中获取选定值并解析它。
关于c# - AjaxControlToolkit 自动完成字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599411/
我正在尝试在客户端 JavaScript 中操作 ajaxcontroltoolkit 选项卡容器。我找到了以下示例代码: var i = 3; function createnew
当我在 Ms Visual Studio 中使用 nuGet 安装 AjaxControlToolkit 时,出现以下错误: PM> install-Package AjaxControlToolki
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章AjaxControlToolKit 显示浏览者本地语言的方法由作者收集
建议我,所有ajax资源文件都是必需的吗? 当我将 ajax dll 添加到 web 应用程序时,看看屏幕截图,它添加了所有资源文件(用红色装箱) 可以删除所有的资源文件吗?他们可能会导致问题? 回复
AjaxControlToolkit.dll.refresh 文件的作用是什么? 最佳答案 *.dll.refresh 文件是一个非常简单的文件,它告诉项目外部引用所在的位置。 http://mons
我尝试通过两种方式从 CalendarExtender 获取日期:一种带有更新面板,另一种没有但它不起作用。这两个日历扩展器的值为空。 这很奇怪,因为我可以从这个扩展器中选择日期,并且文本框的文本被设
Clean Solution”解决了这个问题,我猜这清除了程序集缓存。 关于c# - 无法加载文件或程序集“AjaxControlToolkit,,我们在Stack Overflow上找到一个类似的
AjaxControlToolkit 的饼图是否存在错误,或者我忘记了什么。使用图书馆示例站点提供的示例饼图,我使用以下结构:
我正在使用 AjaxControlToolkit,并将其自动完成扩展绑定(bind)到文本框。 使用原始代码,我可以让它完美地工作。我的要求已经从仅查询和发送一组数据发展到必须使用 key 发送该数据
我们有一个链接到 TextBox 的 AutoCompleteExtender。两个控件都放在 UpdatePanel 中,UpdatePanel 使用 Javascript 库 (Ext.Basic
我正在尝试使用 Ajax 工具包 HTMLEditor(2012 年 6 月发布)来改进用于发布新闻项目和链接(主要是内部资源)的严格内部应用程序。一切都很好,除了我无法让链接创建者创建在新窗口中打开
使用 2013 年 4 月的 AjaxControlToolkit 时,我收到错误消息: 0x800a139e - JavaScript runtime error: error raising up
我正在学习如何在 Visual Studio 10.0.40219.1 SP1Rel、.NET 4.0.30319 SP1Rel 的代码隐藏中使用 VB.NET 使用 Ajax 控制工具包。我去过许多
控制工具包现在对 System.Spacial、Microsoft.Data.Edm、Microsoft.Data.OData、Microsoft.WindowsAzure.Configuration
我正在构建一个 asp.net 应用程序,我应该使用哪种技术来获得 AJAX 功能?为什么?现在我只需要在 GridView 中使用确认按钮,但可能需要更多功能。我可以两者都用,对吧?谢谢。 最佳答案
我在页面上使用 AjaxControlToolkit.HTMLEditor,但根据某些变量,编辑器的 Visible 控件可以在代码隐藏中设置为 false。我在 Javascript 中得到了对 H
我在带有母版页的 asp.net 4.0 中使用 Ajax AsyncFileUpload 控件,但我收到文件无效的错误消息。如果我在没有母版页的情况下使用它,它会起作用。与母版页如果我设置 Clie
我需要使用拖放控件来对列表进行排序。我想通过 AjaxControlToolkit 中的 ReorderList 控件来实现这一点。我已经尝试了一切让它工作,但它不会。一切顺利,比如列表的填充等。但是
我问了一个question几天前关于如何自定义 ajaxcontroltoolkit 库的日历扩展器并得到回复说我应该放弃 jQuery 的控制工具包。我不得不说,我听说 jQuery 被提及了很多,
我有一个带有 TabContainer 控件的页面(来自 Ajax Control Toolkit),我根据当前选择的选项卡切换页面上某些元素的可见性。我一直在 OnClientActiveTabCh
我是一名优秀的程序员,十分优秀!