最近完成了一个B/S的物流管理系统,对于在其中使用的一些新技术做一个总结。此为上篇《
利用XML实现通用WEB报表打印实际使用中的例子 》的继续。
为了解决服务器端页面刷新引起的用户不适和减少无需修改数据重新加载的延时,在单据查询,数据保存,数据修改等操作时采用了AJAX无刷新技术,简单介绍如下:
(一).aspx 页面
包含页面布局,调用隐藏窗体执行操作返回XML并加载到本窗体的javascript代码:
//
根据输入单据号,查询单据该单据信息并在页面上显示
![](https://i-blog.csdnimg.cn/blog_migrate/0f8346cce45bf5a029f6196f13167102.gif)
function
DisplayNoteInfo(ctlRowId,ctlNoteNo,ctlHidStockId,ctlHidMoveType,tableId)
{
//发给后台处理
//alert("hidGetNotesMaster.aspx?NoteNo=" + emNo.value + "&StockId=" + emStockId.value + "&MoveType=" + emTypeCode.value);
oHttpReq.open("POST", "frmhidInOutInform.aspx?globalNo="+ emNoteNo.value +"&stockId=" + emStockId.value + "&actionType=" + emTypeCode.value , false);
oHttpReq.send("");
xmlResult = oHttpReq.responseText;
oDoc.loadXML(xmlResult);
var dataItems = new Array();
var detailItems = new Array();
dataItems[0] = oDoc.selectNodes("//InformMaster/CUSTOMER_NAME");
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
//
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
detailItems[0] = oDoc.selectNodes("//InformDetail/BILL_NO");
//
//主表
if (dataItems[0].length==0 ) //客户名称为空,表示查询单据数据为空
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
{
hasGet = false;
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
}
else //查询单据到了数据
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
{
//客户
var emCustomAddr = document.getElementById('txtCustomName');
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
if(dataItems[0].length > 0)
{
emCustomAddr.value = dataItems[14][0].text;
}
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
else
{
emCustomAddr.value="";
}
hasGet = true;
}
//明细表
if (detailItems[0].length==0)//PROD_TYPE为空
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
{
//hasGet = false;
}
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
else
{
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
for(var i=0;i<=detailItems[0].length-1;i++)
{//逐个遍历
var newRowId;
newRowId = NewRow(tableId); //在表的最后新增一行
newRowId = parseInt(newRowId);
eval("document.all.item(txtBoxCtl[j],newRowId-1).value=detailItems[j][i].text");
}
hasGet = true;
}
return hasGet;
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
}
(二)隐藏窗体在后头工作,返回XML文件
globalNo
=
Request.QueryString(
"
globalNo
"
)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
stockIdStr
=
Request.QueryString(
"
stockId
"
)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
Select Case actionType '根据出入库类型选择操作
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
Case
"
XIAOSHOUCHUKU
"
'销售出库
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
Dim SaleOutAction As New OutSaleAction
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
'检索销售出库主表
Ds
=
SaleOutAction.GetInformInfo(globalNo, stockIdStr, notFinished)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
Dim writer As New System.Xml.XmlTextWriter(Response.OutputStream, New System.Text.UTF8Encoding)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
writer.Formatting
=
System.Xml.Formatting.Indented
writer.Indentation
=
4
writer.IndentChar
=
"
"
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
Ds.WriteXml(writer)
writer.Flush()
writer.Close()
If
Request.UrlReferrer
Is
Nothing
Then
Response.Write(
"
<script language='javascript'>alert( '非法的访问方法!');</script>
"
)
Response.Write(
"
<script language='javascript'>parent.location.href='default.aspx';</script>
"
)
Exit Sub
End
If
为了解决服务器端页面刷新引起的用户不适和减少无需修改数据重新加载的延时,在单据查询,数据保存,数据修改等操作时采用了AJAX无刷新技术,简单介绍如下:
(一).aspx 页面
包含页面布局,调用隐藏窗体执行操作返回XML并加载到本窗体的javascript代码:
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0f8346cce45bf5a029f6196f13167102.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/267684c9dbf46acd60a62d157abf78d2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/8f777e0102e6f160cc2e06beb189c4b1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5c68aad53ee73cabd5d941007d1a5f4a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bf79d3b25c6335b49fbe2ee2e752cc7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5a8d926b5bd74ca6ab19da3ab793726e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/2899e19d1cb223e1b8b4e65dfac416a6.gif)
(二)隐藏窗体在后头工作,返回XML文件
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
(三).要注意的问题
1.窗体间通过post方法传递的参数值最大不能超过4K,否则javascript执行直接出错。
2.我在项目中添加了三个隐藏窗体,分别为:hidInform检索单据信息,hidAction保存等操作,hidXml取得打印单据XML文件。
3.对于隐藏窗体的访问权限,必须是由系统指向的才有权限,直接输入url不允许访问。
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a6b0a7e619da2cdd73d68f57404fda6d.gif)
好了,今天就写到这儿。使用的技术很简单,之所以写出来,一是对给新入门的朋友提供一点帮助,二是自己总结提高。欢迎讨论。