说明:
环境:ASPNET(c#),SQL2K
事例:TEXTBOX下跟随DIV,在TEXTBOX中输入内容,DIV上就显示出相应的查询结果[AJAX],类似于股票输入查询。
页面:一个显示页面(FilialeList);一个后台处理中间文件,一个数据库操作文件,JS操作文件。
显示页面FilialeList:
关键代码 :
调用JS文件
<script language="javascript" src="../JScript/PubJSFunction.js" type="text/javascript"></script>
//当DIV显示后,点击页面其他地方,DIV隐藏。
<body style="margin: 0px" onclick="f_blur()">
//输入的代码框和相应的DIV的HTML,注意中间文件(PubGetTxtCode.aspx')路径
<td>
编码:<asp:TextBox ID="txt_Code" runat="server" Width="110px" CssClass="input1" onkeyup="f_KeyUp('txt_Code','filiale','../Pub/PubGetTxtCode.aspx')"></asp:TextBox>
<div id="divOrders" class="div_Code" style="display: none;">
</div>
</td>
//隐藏对象记录要隐藏哪个DIV的ID(假如页面有好几个输入框和好几个对应的DIV,本例子是页面只有1个输入框和1个DIV)
<input id="hid_DivID" type="hidden" />
中间文件(PubGetTxtCode.aspx):
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtNew = new DataTable();
Common.PubGetTxtCode valueObj = new Common.PubGetTxtCode();
int li_Return = 0;
string ls_ErrText = "";
string mystr = "";
string funName = "";
if (!this.IsPostBack)
{
string Type = Request["Type"].Trim().ToString();
string Code = Request["ls_Code"].Trim().ToString();
# region Swithch(type)
switch (Type)
{
#region 基础资料
case "filiale":
mystr = "编码" + "||||" + "名称";
li_Return = valueObj.GetFiliales(Code, dtNew, ref ls_ErrText);
break;
....
}
if(li_Return>0)
{
for (int i = 0; i < dtNew.Rows.Count; i++)
{
mystr += ",,,," + dtNew.Rows[i][0].ToString() + "||||" + dtNew.Rows[i][1].ToString();
}
}
this.Response.Write(mystr);
this.Response.End();
}
//数据库操作文件:(获取10条记录)
public int GetFiliales(string Code, DataTable dt, ref string ErrText)
{
string ls_Sql;
int ErrCode;
try
{
ls_Sql = "select Top 10 FilialeID,FilialeName from Filiales where FilialeID LIKE '" + Code + "%' AND Status='1'";
ErrCode = _cmd.GetData(ls_Sql, dt);
ErrText = "";
}
catch (System.Exception e)
{
ErrCode = -1900110;
ErrText = e.Message.ToString();
}
return ErrCode;
}
//JS文件:
//焦点控制
function f_blur()
{
var divID = document.all("hid_DivID").value;
if(document.all("hid_DivID").value!="")
{
document.getElementById(divID).style.display="none";
}
}
//获取编码放到TextBox里
function f_GetCode(txtID,value)
{
document.all(txtID).value = value;
document.getElementById("divOrders").style.display="none";
}
//生成DIV内容的HTML
function f_KeyUp(txtID,type,src)
{
document.all("hid_DivID").value="divOrders";
document.all("divOrders").innerHTML = "";
var ls_Code = document.all(txtID).value;
ls_Code=ls_Code.replace(/ +/, "");
ls_Code=ls_Code.replace(/ +$/,"");
if(ls_Code == "")
{
document.getElementById("divOrders").style.display="none";
return;
}
else
{
var webFileUrl = src+"?s="+Math.random()+"&Type="+type+"&ls_Code="+ls_Code;
var result = "";
var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlHttp.open("POST", webFileUrl, false);
xmlHttp.send("");
result = xmlHttp.responseText;
if(result != "")
{
document.getElementById("divOrders").style.display="";
var piArray = result.split(",,,,");
if(piArray.length==1)
{
document.all("divOrders").style.display="none";
return;
}
var html ="<Table border='0' width='100%' align='center' cellpadding='2' cellspacing='2'>";
for(var i=0;i<piArray.length;i++)
{
var ary1 = piArray[i].toString().split("||||");
if (i==0)
{
html+="<Tr style=/"background-color:#CDD0D3 ;/">";
}
else
{
html+="<Tr style=/"background-color:#CDD0D3 ;/" onmouseover=/"c=this.style.backgroundColor;this.style.backgroundColor='#A7A9AC';/" onmouseout=/"this.style.backgroundColor=c;/" onclick=/"f_GetCode('"+txtID+"','"+ary1[0]+"')/">";
}
if(i==0)
{
html+="<td width=/"40%/">";
html+=ary1[0];
html+="</td>";
html+="<td width=/"60%/">";
html+=ary1[1];
html+="</td>";
html+="</Tr>";
}
else
{
html+="<td>";
html+=ary1[0];
html+="</td>";
html+="<td>";
html+=ary1[1];
html+="</td>";
html+="</Tr>";
}
}
html+="</Table>";
html+="<iframe src=/"javascript:false/" style=/"Z-INDEX:-1;POSITION:absolute; FILTER:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0); VISIBILITY:inherit;TOP:0px;WIDTH:100%;HEIGHT:100%;/"></iframe>"
document.all("divOrders").innerHTML= html;
ShowDiv("divOrders",txtID);
}
else
{
document.all("divOrders").style.display="none";
}
}
}
function ShowDiv(divID,txtID)
{
document.all(divID).style.display = "";
//SelectOrder 是要显示的层的ID
var drp = document.all(divID);
var obj = document.all(txtID);
//btnOrderIn 是要显示在的目标控件的ID
if(drp)
{
var objs = obj;
var t = obj.offsetTop, h = obj.clientHeight, l = obj.offsetLeft, p = obj.type;
while (obj = obj.offsetParent){t += obj.offsetTop; l += obj.offsetLeft;}
var cw = drp.clientWidth, ch = drp.clientHeight;
var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;
if (document.body.clientHeight + dt - t - h >= ch)
drp.style.top = (p=='image')? t + h : t + h + 6;
else
drp.style.top = (t - dt < ch) ? ((p=='image')? t + h : t + h + 6) : t - ch;
if (dw + dl - l >= cw)
drp.style.left = l;
else
drp.style.left = (dw >= cw) ? dw - cw + dl : dl;
drp.style.visibility = 'visible';
}
}
//假如页面有几个TEXTBOX和几个相应的DIV的时候,可以把divID作为参数传进来。