javascript 异步页面查询实现代码(asp.net)


Posted in Javascript onMay 26, 2010

1。 testlist.aspx页面:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<link rel="stylesheet" href="jscript/autoSuggest.css" type="text/css"/> 
<link rel="stylesheet" href="jscript/ac.css" type="text/css"/> 
<script language="Javascript" src="jscript/autoSuggest.js"></script> 
<script language="Javascript" src="jscript/ac.js"></script> 
function ACClient( queryurl, width, objInput, objLable ) 
{ 
this.xmldom = getXmlhttp(); 
this.queryurl = queryurl; 
this.prolist = new Array(); 
this.divwidth = width; 
this.objInput = objInput; 
this.getEligible = function(ac) { 
var eligible = new Array(); 
if (ac.inputText.length < 1) { 
document.getElementById(objInput.name).value = ""; 
document.getElementById(objLable.name).value = ""; 
return eligible; 
} 
var strURL = this.queryurl + escape(ac.inputText) + "&rand=" + Math.random(); 
this.xmldom.open("GET", strURL, false); 
try { 
this.xmldom.send(); 
} 
catch (e) { 
return; 
} 
this.prolist = this.xmldom.responseXML.documentElement.selectNodes("/duxion/object"); 
if (0 == this.prolist.length) { 
return eligible; 
} 
for (var i = 0; i < this.prolist.length; i++) { 
if (i > 15) 
break; 
var node = this.prolist.item(i); 
eligible[eligible.length] = node.getAttribute("fullcontent"); 
} 
ac.div.style.width = this.divwidth; 
return eligible; 
}; 
this.useSuggestion = function( sel ) 
{ 
if( sel>=0 ) 
{ 
var node = this.prolist.item(sel); 
if(typeof(node.getAttribute( "value" )) != "undefined") 
document.getElementById(objInput.name).value = node.getAttribute( "value" ); 
else 
document.getElementById(objInput.name).value = ""; 
if(typeof(node.getAttribute( "content" )) != "undefined") 
document.getElementById(objLable.name).value = node.getAttribute( "content" ); 
else 
document.getElementById(objLable.name).value = ""; 
if (this.objInput.name == "hidfreq_code") { 
document.getElementById("txtfreq_name").value = node.getAttribute("Name"); 
document.getElementById("hidfreq_code").value = node.getAttribute("Code"); 
} 
} 
}; 
return this; 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<%--div 用于显示下拉查询部分--%> 
<div id="autosuggest" style="width:160px;font-size:12px;"><ul></ul></div> 
<div> 
<asp:TextBox ID="txtfreq_name" CssClass="needtext" runat="server" Width="100px"></asp:TextBox><asp:HiddenField 
ID="hidfreq_code" runat="server" /> 
</div> 
</form> 
</body> 
</html> 
<script type="text/javascript"> 
new AutoSuggest(document.getElementById('txtfreq_name'), 
new ACClient("testXml.aspx?tag=yp_frequency&value=", "200px", document.getElementById('hidfreq_code'), document.getElementById('txtfreq_name'))); 
</script>

2。 供查询的xml的testxml.aspx.cs文件
public partial class testXml : BaseForm 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
ListXmlData(); 
} 
private string[] arrwidth; 
private string[] arrfield; 
public string fieldlist = "区域Id,区域名,区域编码,区域层次"; 
public string coloumwidth = "60,10,20,30"; 
//显示xml格式数据 
private void ListXmlData() 
{ 
//各字段的宽度 
string strwhere=""; 
if (Request["value"] != null) 
{ 
strwhere = string.Format(" and Code like '{0}%'", Request["value"].ToString()); 
} 
arrfield = fieldlist.Split(','); 
arrwidth = coloumwidth.Split(','); 
DataTable dtList = new Districts().Search("1=1" + strwhere);// dis // SqlHelper.GetTable(subsys_db, CommandType.Text, strsql, null); 
int list_cols = dtList.Columns.Count; //字段数 
int list_rows = dtList.Rows.Count; //记录数 
string listlable = ""; //显示内容 
XmlDocument xmldoc = new XmlDocument(); 
XmlDeclaration dec = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); 
xmldoc.InsertBefore(dec, xmldoc.FirstChild); 
XmlElement root = xmldoc.CreateElement("duxion"); 
xmldoc.AppendChild(root); 
//显示表头 
if (list_rows > 0) 
{ 
XmlElement objtitle = xmldoc.CreateElement("object"); 
for (int k = 0; k < list_cols; k++) 
{ 
listlable += "<span style='width:" + arrwidth[k] + ";text-align:center;font-weight:bold;color:#000000;padding-top:2px;'>" + arrfield[k] + "</span>"; 
if (k == arrfield.Length - 1) 
break; 
} 
objtitle.SetAttribute("fullcontent", listlable); 
root.AppendChild(objtitle); 
} 
//显示表头 
//显示数据 
for (int i = 0; i < list_rows; i++) 
{ 
listlable = ""; 
DataRow drList = dtList.Rows[i]; 
XmlElement obj = xmldoc.CreateElement("object"); 
for (int j = 0; j < list_cols; j++) 
{ 
obj.SetAttribute(dtList.Columns[j].ColumnName, drList[j].ToString()); 
if (j <= arrfield.Length - 1) 
{ 
//listlable += "<span style='width:" + arrwidth[j] + "'>" + GetLeftString(drList[j].ToString(), Convert.ToInt16(arrwidth[j])) + "</span>"; 
listlable += "<span style='width:" + arrwidth[j] + "'>" + formatXmlNode(dtList.Columns[j].DataType.ToString(), drList[j].ToString()) + "</span>"; 
} 
} 
obj.SetAttribute("fullcontent", listlable); 
root.AppendChild(obj); 
} 
//显示数据 
//Response.ContentType = "text/xml;charset=utf-8"; 
//Response.ContentType = "text/xml;charset=gb2312"; 
Response.ContentEncoding = System.Text.Encoding.Default; 
Response.ContentType = "text/xml"; 
Response.Clear(); 
Response.Write(xmldoc.OuterXml); 
Response.End(); 
} 
private string formatXmlNode(string field_type, string field_value) 
{ 
string return_value = field_value.Trim(); 
switch (field_type) 
{ 
case "System.Double": 
case "System.Decimal": 
return_value = string.Format("{0:0.###}", Convert.ToDouble(return_value)); 
break; 
} 
return return_value; 
} 
}

3.效果图:
javascript 异步页面查询实现代码(asp.net)
4。 另外的.js以及.css文件见附件
Javascript 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
JS数组去重常用方法实例小结【4种方法】
May 28 Javascript
vue中组件通信的八种方式(值得收藏!)
Aug 09 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 Javascript
Angular进行简单单元测试的实现方法实例
Aug 16 Javascript
vue监听滚动事件的方法
Dec 21 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
js 点击按钮弹出另一页,选择值后,返回到当前页
May 26 #Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 #Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 #Javascript
jQuery select操作控制方法小结
May 26 #Javascript
select 控制网页内容隐藏于显示的实现代码
May 25 #Javascript
JQuery 动态扩展对象之另类视角
May 25 #Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 #Javascript
You might like
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
php给数组赋值的实例方法
2019/09/26 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
眼镜促销方案
2014/03/15 职场文书
拆迁委托协议书
2014/09/15 职场文书
企业年检委托书范本
2014/10/14 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js