请问b/s结构下的手动添加订单涉及多产品问题的解决 目前在做个b/s结构的erp系统,遇到一点麻烦,请教高手帮帮忙。新添加一订单,输入订单号、金额等外,其中还涉及到该订单下含有多个产品,我想要的是:输入产品编码(如前几位数字时),能够模糊带出对应的产品名称、厂家、规格列表,然后我选择其中的一条就填充到该订单的产品列表中,附参照的截图: 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实自己控制一个div,div里面有表格等你需要的元素,内容变化时,div的display显示,通过ajax等去获取数据,然后在div中显示 以前写过一个纯js的快速查询。比较戳,不过思路是一致的。可以供楼主看一下。你可以用jquery改写一下。前台调用:<td width="65px" height="30px" class="left_txt2"> 收货人: </td> <td width="120px"> <asp:TextBox ID="txt_consignee" MaxLength="10" CssClass="TextBox_Order" ForeColor="Red" Width="103px" autocomplete="off" onclick="MouseClickChangeColor(this)" onkeyup="QuickSearch(event,this,'name',this.value)" runat="server"></asp:TextBox> </td>Js://收货人 名称或地址 快速查询function QuickSearch(fox, bobj, type, key) { var URL = "../../Ajax/QuickSearch.aspx?type=" + type + "&key=" + escape(key); var strPostValues = xmlhttpPost(URL, null); var name = strPostValues.getElementsByTagName("name"); var address = strPostValues.getElementsByTagName("address"); var phonenumber = strPostValues.getElementsByTagName("phonenumber"); if (name.length == 0) { strPostValues = ""; oPopup = null; //如果原来有“divCss”这个图层,先删除这个图层 if (document.getElementById("divCss")) { document.getElementById("divCss").parentNode.removeChild(document.getElementById("divCss")); } return; } var h = name.length * 20 - 5; if (window.ActiveXObject) { //IE下可以用createPopup var str = "<table style='background:#FFF;border: 1px solid #AAAAAA;font-size:12px;width:" + bobj.clientWidth + "px;' id='tbSelect'>" for (var i = 0; i < name.length; i++) { str += "<tr style='cursor:pointer;' onmouseover=\"this.style.backgroundColor='#E7F1FA';parent.index=this.rowIndex;\" onmouseout=\"this.style.backgroundColor='#fff'\" " + "onclick=\"try{ConsigneeIn('" + name[i].getAttribute("value") + "','" + address[i].getAttribute("value") + "','" + phonenumber[i].getAttribute("value") + "');}catch(e){}\" " + "/><td>" + ShowInfo(type, name[i].getAttribute("value"), address[i].getAttribute("value")) + "</td></tr>"; } str += "</table>"; oPopup = window.createPopup(); index = -1 oPopup.document.body.innerHTML = str; var x = event.screenX - event.offsetX; var y = event.screenY - event.offsetY + 20; var width = event.srcElement.offsetWidth; var height = h; oPopup.show(x, y, width, height); } else //其他浏览器则选择用弹出div的方式 { //如果原来有“divCss”这个图层,先删除这个图层 if (document.getElementById("divCss")) { document.getElementById("divCss").parentNode.removeChild(document.getElementById("divCss")); } var str = "<table style='background:#FFF;border: 1px solid #AAAAAA;font-size:12px;width:" + bobj.clientWidth + "px;' id='tbSelect'>" for (var i = 0; i < name.length; i++) { str += "<tr style='cursor:pointer;' onmouseover=\"this.style.backgroundColor='#E7F1FA';window.index=this.rowIndex;\" onmouseout=\"this.style.backgroundColor='#fff'\" " + "onclick=\"try{ConsigneeIn('" + name[i].getAttribute("value") + "','" + address[i].getAttribute("value") + "','" + phonenumber[i].getAttribute("value") + "');}catch(e){}\" " + "/><td>" + ShowInfo(type,name[i].getAttribute("value"),address[i].getAttribute("value")) + "</td></tr>"; } str += "</table>"; var x, y; if (fox.screenX != undefined) { x = fox.screenX - getOffset(fox).offsetX - (fox.screenX - fox.layerX) - document.documentElement.scrollLeft + 2; y = fox.screenY - getOffset(fox).offsetY - (fox.screenY - fox.layerY) - document.documentElement.scrollTop + 20; } else { var tar = fox.target; var pos = GetObjPos(tar); x = pos.x - document.documentElement.scrollLeft + 2; // eval(tar).offsetWidth 是操作对象的宽度 比如textbox的宽度 y = pos.y - document.documentElement.scrollTop + eval(tar).offsetHeight + 2; //是操作对象的高度 比如textbox的高度 } var width = fox.target.offsetWidth; var height = h; /******弹出层代码开始*********/ //创建层 var payment = document.createElement('div'); // 初始化层 payment.innerHTML = "<div id=\"divCss\" style='display:block;'>" + str + "</div>"; payment.className = 'menu'; // 定位层 payment.style.cssText = 'FILTER:Alpha(opacity=85);opacity:0.95;'; payment.style.left = x + "px"; //X轴 payment.style.top = y + "px"; //Y轴 payment.style.width = width; //层宽 payment.style.height = height; //层高 //显示层 psp_flag = true; document.body.appendChild(payment); /******弹出层代码结束*********/ }}CS:protected void Page_Load(object sender, EventArgs e) { string type = ""; if (Request.QueryString["type"] != null) { type = Request.QueryString["type"].ToString(); } string key = ""; if (Request.QueryString["key"] != null) { key = HttpContext.Current.Server.UrlDecode(Request.QueryString["key"].ToString()); } Response.ContentType = "text/xml"; Response.ContentEncoding = Encoding.GetEncoding("utf-8"); if (key.Equals("")) { Response.End(); } Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); Response.Write("<keylist>\n"); OrderBLL ob = new OrderBLL(); DataSet ds = new DataSet(); if (type == "name") { ds = ob.GetConsigneeInfoByName(key); } else if (type == "address") { ds = ob.GetConsigneeInfoByAddress(key); } foreach (DataRow row in ds.Tables[0].Rows) { Response.Write("\t<name value=\"" + row["Name"].ToString() + "\"/>\n"); Response.Write("\t<address value=\"" + row["Address"].ToString() + "\"/>\n"); Response.Write("\t<phonenumber value=\"" + row["PhoneNumber"].ToString() + "\"/>\n"); } Response.Write("</keylist>"); } 应该跟金蝶的K3 差不多吧! 不知道你环境是什么!cs bs ? 行里面存下产品的ID,当输入的时候用Js来一个keypress事件,然后用JQ的过滤器把表格中满足要求的行的背景色的标记一下 谢谢大家了,这个系统是b/s结构的,最后我采用了div+table布局成所需要的布局样子,然后利用ajax来进行数据的调取和保存。 添加引用问题 通过IIS虚拟目录以运行aspx程序时遇到403错误 还是网页数据采集问题 急求助.一个小问题,谢谢各位大哥 C#中如何比较两个日期中的天数差别? 有个css样式文件,我怎么使自己的datarid套用这里面的样式?谢谢 有没有人用过WebGrease实现网站多语言 怎么在项目中加入图片啊?? 一个很简单的问题,如何得到改变后的textbox.text? .net webapi post到后台报错not found 求解决方法,大牛来啊! ASP.NET MVC根据不同域名,调用不同“主题”的VIEW。可以吗?
比较戳,不过思路是一致的。可以供楼主看一下。你可以用jquery改写一下。
前台调用:
<td width="65px" height="30px" class="left_txt2">
收货人:
</td>
<td width="120px">
<asp:TextBox ID="txt_consignee" MaxLength="10" CssClass="TextBox_Order" ForeColor="Red" Width="103px" autocomplete="off"
onclick="MouseClickChangeColor(this)" onkeyup="QuickSearch(event,this,'name',this.value)" runat="server"></asp:TextBox>
</td>Js:
//收货人 名称或地址 快速查询
function QuickSearch(fox, bobj, type, key) {
var URL = "../../Ajax/QuickSearch.aspx?type=" + type + "&key=" + escape(key);
var strPostValues = xmlhttpPost(URL, null);
var name = strPostValues.getElementsByTagName("name");
var address = strPostValues.getElementsByTagName("address");
var phonenumber = strPostValues.getElementsByTagName("phonenumber");
if (name.length == 0) {
strPostValues = "";
oPopup = null;
//如果原来有“divCss”这个图层,先删除这个图层
if (document.getElementById("divCss")) {
document.getElementById("divCss").parentNode.removeChild(document.getElementById("divCss"));
}
return;
}
var h = name.length * 20 - 5;
if (window.ActiveXObject) { //IE下可以用createPopup
var str = "<table style='background:#FFF;border: 1px solid #AAAAAA;font-size:12px;width:" + bobj.clientWidth + "px;' id='tbSelect'>"
for (var i = 0; i < name.length; i++) {
str += "<tr style='cursor:pointer;' onmouseover=\"this.style.backgroundColor='#E7F1FA';parent.index=this.rowIndex;\" onmouseout=\"this.style.backgroundColor='#fff'\" "
+ "onclick=\"try{ConsigneeIn('" + name[i].getAttribute("value") + "','" + address[i].getAttribute("value") + "','" + phonenumber[i].getAttribute("value") + "');}catch(e){}\" "
+ "/><td>" + ShowInfo(type, name[i].getAttribute("value"), address[i].getAttribute("value")) + "</td></tr>";
}
str += "</table>";
oPopup = window.createPopup();
index = -1
oPopup.document.body.innerHTML = str;
var x = event.screenX - event.offsetX;
var y = event.screenY - event.offsetY + 20;
var width = event.srcElement.offsetWidth;
var height = h;
oPopup.show(x, y, width, height);
}
else //其他浏览器则选择用弹出div的方式
{
//如果原来有“divCss”这个图层,先删除这个图层
if (document.getElementById("divCss")) {
document.getElementById("divCss").parentNode.removeChild(document.getElementById("divCss"));
}
var str = "<table style='background:#FFF;border: 1px solid #AAAAAA;font-size:12px;width:" + bobj.clientWidth + "px;' id='tbSelect'>"
for (var i = 0; i < name.length; i++) {
str += "<tr style='cursor:pointer;' onmouseover=\"this.style.backgroundColor='#E7F1FA';window.index=this.rowIndex;\" onmouseout=\"this.style.backgroundColor='#fff'\" "
+ "onclick=\"try{ConsigneeIn('" + name[i].getAttribute("value") + "','" + address[i].getAttribute("value") + "','" + phonenumber[i].getAttribute("value") + "');}catch(e){}\" "
+ "/><td>" + ShowInfo(type,name[i].getAttribute("value"),address[i].getAttribute("value")) + "</td></tr>";
}
str += "</table>";
var x, y;
if (fox.screenX != undefined) {
x = fox.screenX - getOffset(fox).offsetX - (fox.screenX - fox.layerX) - document.documentElement.scrollLeft + 2;
y = fox.screenY - getOffset(fox).offsetY - (fox.screenY - fox.layerY) - document.documentElement.scrollTop + 20;
}
else {
var tar = fox.target;
var pos = GetObjPos(tar);
x = pos.x - document.documentElement.scrollLeft + 2; // eval(tar).offsetWidth 是操作对象的宽度 比如textbox的宽度
y = pos.y - document.documentElement.scrollTop + eval(tar).offsetHeight + 2; //是操作对象的高度 比如textbox的高度
}
var width = fox.target.offsetWidth;
var height = h;
/******弹出层代码开始*********/
//创建层
var payment = document.createElement('div');
// 初始化层
payment.innerHTML = "<div id=\"divCss\" style='display:block;'>" + str + "</div>";
payment.className = 'menu';
// 定位层
payment.style.cssText = 'FILTER:Alpha(opacity=85);opacity:0.95;';
payment.style.left = x + "px"; //X轴
payment.style.top = y + "px"; //Y轴
payment.style.width = width; //层宽
payment.style.height = height; //层高
//显示层
psp_flag = true;
document.body.appendChild(payment);
/******弹出层代码结束*********/
}
}CS:
protected void Page_Load(object sender, EventArgs e)
{
string type = "";
if (Request.QueryString["type"] != null)
{
type = Request.QueryString["type"].ToString();
} string key = "";
if (Request.QueryString["key"] != null)
{
key = HttpContext.Current.Server.UrlDecode(Request.QueryString["key"].ToString());
} Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.GetEncoding("utf-8");
if (key.Equals(""))
{ Response.End(); }
Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
Response.Write("<keylist>\n"); OrderBLL ob = new OrderBLL();
DataSet ds = new DataSet();
if (type == "name")
{
ds = ob.GetConsigneeInfoByName(key);
}
else if (type == "address")
{
ds = ob.GetConsigneeInfoByAddress(key);
}
foreach (DataRow row in ds.Tables[0].Rows)
{
Response.Write("\t<name value=\"" + row["Name"].ToString() + "\"/>\n");
Response.Write("\t<address value=\"" + row["Address"].ToString() + "\"/>\n");
Response.Write("\t<phonenumber value=\"" + row["PhoneNumber"].ToString() + "\"/>\n");
} Response.Write("</keylist>");
}