您的位置:首页 > 编程语言 > ASP

ASP.net DropDownList 无刷新联动菜单

2005-12-14 09:19 459 查看
再谈 N 个 asp.net DropDownList 无刷新联动菜单,牺牲N-1个ASPX来实现自动更新机制,避免刷新的闪动!!以下代码绝对可以使用,也可以实现多级菜单。。。。

function load(state)
{
var drp2 = document.getElementById("DropDownList2");
for(var i=0;i<=drp2.options.length-1;i++)
{
drp2.remove(i);
}
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP"); //发送请求
var oDoc = new ActiveXObject("MSXML2.DOMDocument"); //响应结果
var state=document.getElementById("DropDownList1").value;
oHttpReq.open("post","webform6.aspx?state="+state, false);
oHttpReq.send("");
result = oHttpReq.responseText;
oDoc.loadXML(result); 

// items = oDoc.selectNodes("//CITY/Table");
items = oDoc.selectNodes("//address/Table");
   for (var item = items.nextNode();item;item = items.nextNode())
   { 
    var city = item.selectSingleNode("//address").nodeTypedValue;
    var newOption = document.createElement("OPTION"); 
    newOption.text = city; 
    newOption.value = city; 
    drp2.options.add(newOption); 
     } 
}
<script language="javascript">
function load(state)
{
var drp2 = document.getElementById("DropDownList2");
for(var i=0;i<=drp2.options.length-1;i++)
{
drp2.remove(i);
}
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP"); //发送请求
var oDoc = new ActiveXObject("MSXML2.DOMDocument"); //响应结果
var state=document.getElementById("DropDownList1").value;
oHttpReq.open("post","webform2.aspx?state="+state, false);
oHttpReq.send("");
result = oHttpReq.responseText;
oDoc.loadXML(result); 

// items = oDoc.selectNodes("//CITY/Table");
items = oDoc.selectNodes("//address/Table");
   for (var item = items.nextNode();item;item = items.nextNode())
   { 
    var city = item.selectSingleNode("//address").nodeTypedValue;
    var newOption = document.createElement("OPTION"); 
    newOption.text = city; 
    newOption.value = city; 
    drp2.options.add(newOption); 
     } 
}
</script>

============================
webform1.aspx
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
SqlConnection con = new SqlConnection("packet size=4096;user id=sa;data source=SERVER;persist security info=False;initial catalog=pubs");
SqlDataAdapter da = new SqlDataAdapter("select state from authors group by state",con);
DataSet ds = new DataSet("State");
da.Fill(ds);
this.DropDownList1.DataSource = ds.Tables[0];
this.DropDownList1.DataTextField = "state";
this.DropDownList1.DataValueField = "state"; 
this.DropDownList1.DataBind();  
this.DropDownList1.Attributes.Add("onchange","load()");  
//DropDownList1.
}

}

webform2.aspx
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(this.Request["state"]!=null)
{  
string state = this.Request["state"].ToString();  
SqlConnection con = new SqlConnection("packet size=4096;user id=sa;data source=SERVER;persist security info=False;initial catalog=pubs");
SqlDataAdapter da = new SqlDataAdapter("select address from authors where state = '"+state+"'",con);  
DataSet ds = new DataSet("address");  
da.Fill(ds);  
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Response.ContentEncoding);  
writer.Formatting = Formatting.Indented;  
writer.Indentation = 4;  
writer.IndentChar = ' ';  
ds.WriteXml(writer);  
writer.Flush();  
Response.End();  
writer.Close();  
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: