项目中做了一个无刷新关联的下拉列表,网上找的代码,使用xmlhttp和js的,调试了半天最后问题解决,把代码贴在这里。使用Ajax也可以,不过我还没学。
项目中做了一个无刷新关联的下拉列表,网上找的代码,使用xmlhttp和js的,调试了半天最后问题解决,把代码贴在这里。使用Ajax也可以,不过我还没学。
在页面文件中添加js函数

Code
<script language="javascript" type="text/javascript">
//关联无刷新 点击部门下拉列表,显示人员列表
function load(state)
{
var drp2 = document.getElementById("ddlCustomer");
for(i = drp2.length; i >= 0; i --)
{
drp2.options.remove(i);//清楚人员列表
}
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
var oDoc = new ActiveXObject("MSXML2.DOMDocument");
oHttpReq.open("POST", "getData.aspx?ID=" + escape(state), false); //传值, 中文使用escapa()
oHttpReq.send("");
var result = oHttpReq.responseText;
oDoc.loadXML(result); //得到返回的xml数据
items1 = oDoc.selectNodes("//dsName/User/Name");
items2 = oDoc.selectNodes("//dsName/User/ID"); //选择需要的字段
var itemsLength=items1.length;
for(i=0;i<itemsLength;i++)
{
var newOption = document.createElement("OPTION");
newOption.value=items2[i].text;
newOption.text=items1[i].text;
drp2.options.add(newOption);
}
}
window.onload = function() //初次加载
{
var drp1 = document.getElementById("ddlApplicationDepartment");
load(drp1.options.value);
}
</script>
后台.cs文件中为下拉列表添加属性
ddlApplicationDepartment.Attributes.Add("onchange", "load(this.options[this.selectedIndex].value)");
getData.aspx 为空页面,用于从数据库中取值

Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strid = Request.QueryString[DepartmentData.ID_FIELD];
if (!string.IsNullOrEmpty(strid))
{
int id = Convert.ToInt32(strid);
UserData data = (new UserLogic()).GetUsersByDepartmentID(id);//获取数据
if (data != null)
{
data.DataSetName = "dsName";
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream,Response.ContentEncoding);
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.IndentChar = ' ';
writer.WriteStartDocument();
data.WriteXml(writer);
writer.Flush();
Response.End();
writer.Close();
}
}
}
}
在调试的时候,先test一下getData.aspx?ID=,的 xml文件,可以先把xml文件写到本地文件中去。