ajaxToolkit:AutoCompleteExtender 的触发选择事件以及JSON序列化和使用键值对
2011-03-01 10:27
639 查看
当弹出列表选择其中的一项时触发事件, 设置ace的OnClientItemSelected 属性:
<ajaxToolkit:AutoCompleteExtender OnClientItemSelected="OnACEItemSelected"
OnACEItemSelected是一个js 函数:
function OnACEItemSelected(source, eventArgs) {
alert(eventArgs.get_value());
alert(eventArgs.get_text());
}
顾名思义, get_text() 返回文本, get_value() 返回值.
服务器端返回值的方法:
lst.Add("{'First':'00150-3030','Second':200}");
lst.Add("{'First':'木只八刀','Second':'moosdau'}");
可以看到, 显示出来的是"First" 的值, get_value() 方法可以得到隐藏的值.
注意字符串的构造方法: 除数值型外, 字符串两侧都要有单引号, 否则会反序列化失败.
现在来进一步看看到底发生了什么事.
try {
var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')');
if (pair && pair.First) {
// Use the text and value pair returned from the web service
text = pair.First;
value = pair.Second;
} else {
// If the web service only returned a regular string, use it for
// both the text and the value
text = completionItems[i];
value = completionItems[i];
}
} catch (ex) {
text = completionItems[i];
value = completionItems[i];
}
.
这是从服务器端返回后, 展示到客户端之前的代码, var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')'); 这一句, 就是关键点. 它执行了一个反序列化, 并且返回了一个包含”First” 和”Second” 属性的对象, 所以, 只要我们在服务器端把对象序列化一下就可以在这里得到正确的对象了. 这里使用的序列化方法, 被称作JSON 序列化.
JSON, 全称是JavaScript Object Notation,是一种文字格式标记法, 这种标记法在服务器端和客户端同时受支持, 服务器端的序列化方法是:
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string str = serializer.Serialize("something");
var obj = serializer.Deserialize<string>(str);
客户端的就如同我们已经看到的:
Sys.Serialization.JavaScriptSerializer.deserialize
这样就可以在客户端和服务器端之间传递对象了.
注: 实际上, 以前我自己写了一套序列化和反序列化的功能, 用于在B/S 之间传递对象, 这是跟AjaxToolKit 没什么关系的基础功能. 早知道微软已经做好了, 我当时就不用费劲自己写了. 呵呵 .
---------------------------------------------
作者:夏狼哉
博客:http://moosdau.blog.163.com
如需引用,敬请保留作者信息,谢谢
<ajaxToolkit:AutoCompleteExtender OnClientItemSelected="OnACEItemSelected"
OnACEItemSelected是一个js 函数:
function OnACEItemSelected(source, eventArgs) {
alert(eventArgs.get_value());
alert(eventArgs.get_text());
}
顾名思义, get_text() 返回文本, get_value() 返回值.
服务器端返回值的方法:
lst.Add("{'First':'00150-3030','Second':200}");
lst.Add("{'First':'木只八刀','Second':'moosdau'}");
可以看到, 显示出来的是"First" 的值, get_value() 方法可以得到隐藏的值.
注意字符串的构造方法: 除数值型外, 字符串两侧都要有单引号, 否则会反序列化失败.
现在来进一步看看到底发生了什么事.
try {
var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')');
if (pair && pair.First) {
// Use the text and value pair returned from the web service
text = pair.First;
value = pair.Second;
} else {
// If the web service only returned a regular string, use it for
// both the text and the value
text = completionItems[i];
value = completionItems[i];
}
} catch (ex) {
text = completionItems[i];
value = completionItems[i];
}
.
这是从服务器端返回后, 展示到客户端之前的代码, var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')'); 这一句, 就是关键点. 它执行了一个反序列化, 并且返回了一个包含”First” 和”Second” 属性的对象, 所以, 只要我们在服务器端把对象序列化一下就可以在这里得到正确的对象了. 这里使用的序列化方法, 被称作JSON 序列化.
JSON, 全称是JavaScript Object Notation,是一种文字格式标记法, 这种标记法在服务器端和客户端同时受支持, 服务器端的序列化方法是:
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string str = serializer.Serialize("something");
var obj = serializer.Deserialize<string>(str);
客户端的就如同我们已经看到的:
Sys.Serialization.JavaScriptSerializer.deserialize
这样就可以在客户端和服务器端之间传递对象了.
注: 实际上, 以前我自己写了一套序列化和反序列化的功能, 用于在B/S 之间传递对象, 这是跟AjaxToolKit 没什么关系的基础功能. 早知道微软已经做好了, 我当时就不用费劲自己写了. 呵呵 .
---------------------------------------------
作者:夏狼哉
博客:http://moosdau.blog.163.com
如需引用,敬请保留作者信息,谢谢
相关文章推荐
- ajaxToolkit:AutoCompleteExtender 的触发选择事件以及JSON序列化和使用键值 3ff8 对
- ajaxToolkit:AutoCompleteExtender 的触发选择事件以及JSON序列化和使用键值对
- ajaxToolkit:AutoCompleteExtender 的触发选择(选中)事件
- ajaxToolkit AutoCompleteExtender click 选择某项之后触发事件
- Ajax Toolkit 控件学习系列(6) ——AutoCompleteExtender 使用
- 轻松掌握Ajax.net系列教程十五:使用AutoCompleteExtender
- 关于jquery序列化表单的使用,以及jquery-ajax上传文件
- 轻松Ajax.net实例教程3_AutoCompleteExtender(按AjaxControlToolkit字母排序)
- AjaxControlToolkit 微软出的ajax.net 工具使用教程二十 AutoCompleteExtender(自动提示)控件的使用
- Ajax中 AutoCompleteExtender 的使用方法
- asp.net ajax 使用AutoCompleteExtender开发自动完成功能(转载)
- ajax跨域,使用json,crossDomain,请求返回状态200,但是走的error的原因以及解决方法
- ajaxToolkit:AutoCompleteExtender的自定义参数(contextKey)
- Ajax的AutoCompleteExtender的使用
- ajaxControlToolkit---AutoCompleteExtender的简单用法
- c# 使用 Newtonsoft.Json 序列化json字符串以及,反序列化对象
- 轻松掌握Ajax.net系列教程十五:使用AutoCompleteExtender
- ajaxToolkit:AutoCompleteExtender 使用键值对
- asp.net ajax 使用AutoCompleteExtender开发自动完成功能
- 使用AutoCompleteExtender在服务器端获取提示数据提示客户选择