ajaxpro两级联动正常,但是只要单击了页面上的按钮或刷新页面后,第二级的droplist的内容全部回到刚加打开页面时的状态,而且取值时也如此。
解决方案 »
- 下级用户设计
- ASP.NET中全局变量不累加?
- js 判断textbox的enabled 属性
- II5和IIS6
- 如何布置web应用程序vs2003+sql2000+iis,即在一台既没有装iis和framework1.1也没有装sql2000的机上部署?
- 有一个 TextBox2 ,TextMode="Password" ,我想为其赋值,然后,想把值以 ***** 的形式显示出来,可是当 TextMode="Password" 时,赋值后
- 请问各位程序员,现在哪个邮箱系统好一点,我想要买一个
- 在.net中如何实现点某个按钮后渐进显示我想显示的内容???
- 怎样利用.net自带的MSDE与数据库连接?
- 使用源程序
- 有关支付宝接口的一点小问题!
- 传值问题~~~,没见过~
保存第二级的droplist的值然后现加载事件中选隐藏域的那一项
把你选择的第一个下拉值通过URL传递过来,然后在page_load里得到。申明public个全局变量,选种第一个下拉框的值,然后用JS。在body onload事件里重新调用你的级联代码一次就可以了。
看不明白,能给些详细代码吗
页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DropDownListTest.aspx.cs" Inherits="AjaxTest.DropDownListTest" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body onload="_OnLoad('<%=m_selectedValue%>');">
<script language="javascript" type="text/javascript">
<!--
//onchange事件
function _Onchange()
{
//*************清空目标下拉框
var destDropdown = document.getElementById("<%=DropDownList2.ClientID %>");
//
destDropdown.options.length = 0;//
//源下拉框
var srcDropdown = document.getElementById("<%=DropDownList1.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
//
if(selectevalue.length>0)
{
_GetValue(selectevalue);
}
else
{
alert("请选择");
}
return false;
}
function _GetValue(TempValue)
{
//ajaxpro返回值
AjaxTest.DropDownListTest.GetDataSet(TempValue,_callback1);
}
function _callback1(res)
{
//得到返回的值
var rows = res.value.Tables[0].Rows.length;
//
var destDropdown = document.getElementById("<%=DropDownList2.ClientID %>");
//
for(var i=0;i<rows;i++)
{
//**********添加下拉框
var newoption = new Option(res.value.Tables[0].Rows[i].Text, res.value.Tables[0].Rows[i].Value);
destDropdown.options.add(newoption);
} }
//onload事件
function _OnLoad(TempValue)
{
if(TempValue.length>0)
{
_GetValue(TempValue);
//
var srcDropdown = document.getElementById("<%=DropDownList1.ClientID %>");
//
for(var i=0;i<srcDropdown.options.length;i++)
{
if(TempValue == srcDropdown.options[i].value)
{
srcDropdown.options[i].selected = true;
break;
}
}
}
}
//
function test()
{
//源下拉框
var srcDropdown = document.getElementById("<%=DropDownList1.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
//
if(selectevalue.length>0)
{
window.location.href = "DropDownListTest.aspx?Temp=" + selectevalue;
}
else{alert("请选择");}
//
return false;
}
//-->
</script>
<form id="form1" runat="server">
<div>
From:
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Value="">请选择</asp:ListItem>
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
To:
<asp:DropDownList ID="DropDownList2" runat="server">
</asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" Text="刷新"/>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;namespace AjaxTest
{
public partial class DropDownListTest : System.Web.UI.Page
{
/// <summary>
/// 申明一个全局变量:通过URL得到的选择的值
/// </summary>
public string m_selectedValue = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
//注册ajaxpro
AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxTest.DropDownListTest));
//得到选择的值
m_selectedValue = Request.QueryString["Temp"] == null ?
string.Empty : Request.QueryString["Temp"].ToString();
//注册onchange事件
this.DropDownList1.Attributes.Add("onchange", "return _Onchange();");
//注册刷新按钮的事件
this.Button1.Attributes.Add("onclick","return test();");
}
/// <summary>
/// 返回dataset值
/// </summary>
/// <param name="strSelectedValue">选择的值</param>
/// <returns></returns>
[AjaxPro.AjaxMethod]
public DataSet GetDataSet(string strSelectedValue)
{
DataSet ds = new DataSet();
ds.Tables.Add(GetDataTable(strSelectedValue));
return ds; }
/// <summary>
/// 返回Table
/// </summary>
/// <param name="strSelectedValue">选择的值</param>
/// <returns></returns>
private DataTable GetDataTable(string strSelectedValue)
{
DataTable tblData = new DataTable();
tblData.Columns.Add("Text");
tblData.Columns.Add("Value");
//选择了1
if (strSelectedValue == "1")
{
tblData.Rows.Add("Obsession", "Karen");
tblData.Rows.Add("Vanished", "Robards");
}
else
{
tblData.Rows.Add("Magician: Apprentice", "Feist, Raymong E.");
tblData.Rows.Add("Magician: Master", "Feist");
} return tblData;
} }
}web.config:
<httpHandlers>
<!-- ajaxPro -->
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
注意:别用ajaxpro 7.7.31.1_DLL.zip 这个版本。返回dataset有问题请用以前的版本:最好用6.10.6.2测试结果合符要求
function test()
{
//源下拉框
var srcDropdown = document.getElementById(" <%=DropDownList1.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
//
if(selectevalue.length>0)
{
window.location.href = "DropDownListTest.aspx?Temp=" + selectevalue;
}
else{alert("请选择");}
//
return false;
}
中的第一句前,执行,放在第二句后就不执行了它,为什么
function test()
{
alert("good");
//源下拉框
var srcDropdown = document.getElementById(" <%=DropDownList1.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
//
if(selectevalue.length>0)
{
window.location.href = "DropDownListTest.aspx?Temp=" + selectevalue;
}
else{alert("请选择");}
//
return false;
}
此时,单击按钮时弹出”good",而下面时:function test()
{ //源下拉框
var srcDropdown = document.getElementById(" <%=DropDownList1.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
//
alert("good");
if(selectevalue.length>0)
{
window.location.href = "DropDownListTest.aspx?Temp=" + selectevalue;
}
else{alert("请选择");}
//
return false;
} 单击时不弹出“good",不知为什么
aspx中是:
<head runat="server" >
<title>利国实验小学考试成绩输入</title>
<script language="javascript" type="text/javascript">
function GetTeamList()
{
var nianji=document.getElementById("nianjiDropDownList");
_Default.TeamName(nianji.value,TeamCallBack);
_Default.xuekeName(nianji.value,xuekeCallBack);
}
function TeamCallBack(response)
{
if(response.value !=null)
{
var team=document.getElementById("banjiDropDownList");
var dt=response.value;
team.length=0;
for(var i=0;i<dt.Rows.length;i++)
{
var team_text=dt.Rows[i]["class"];
var team_value=dt.Rows[i]["class"];
team.options.add(new Option(team_text,team_value));
}
}
}function xuekeCallBack(response)
{
if(response.value !=null)
{
var team=document.getElementById("xuekeDropDownList");
var dt=response.value;
team.length=0;
for(var i=0;i<dt.Rows.length;i++)
{
var team_text=dt.Rows[i]["学科"];
var team_value=dt.Rows[i]["学科"];
team.options.add(new Option(team_text,team_value));
}
}
getData();
} function getData()
{
var p=document.getElementById("xuekeDropDownList");
var pindex = p.selectedIndex;
var pValue = p.options[pindex].value;
var pText = p.options[pindex].text;
document.getElementById("<%=xmlabel.ClientID%>").innerText=pText;
} function test()
{
//源下拉框
var srcDropdown = document.getElementById(" <%=nianjiDropDownList.ClientID %>");
//得到选择的值
var selectevalue = srcDropdown.options[srcDropdown.options.selectedIndex].value;
alert("good");
//
if(selectevalue.length>0)
{
window.location.href = "Default.aspx?Temp=" + selectevalue;
}
else{alert("请选择");}
//
return false;
} //onload事件
function _OnLoad(TempValue)
{
if(TempValue.length>0)
{
_GetValue(TempValue);
//
var srcDropdown = document.getElementById(" <%=nianjiDropDownList.ClientID %>");
//
for(var i=0;i <srcDropdown.options.length;i++)
{
if(TempValue == srcDropdown.options[i].value)
{
srcDropdown.options[i].selected = true;
break;
}
}
}
} </script>
</head>
<body onload="_OnLoad(' <%=m_selectedValue%>');" onkeypress=" return Enter();" >
aspx.cx中是: public string m_selectedValue = string.Empty;
[AjaxPro.AjaxMethod]
public DataTable TeamName(string systemselectname)
{
try
{
OleDbConnection oleDbConnection1 = new OleDbConnection(@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""D:\liuhai\wangscore\studentscore.mdb"";Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1");
oleDbConnection1.Open(); // OleDbCommand OleDbCommand1 = new OleDbCommand("Select class from banji Where grade=" + systemselectname + " order by ID desc", oleDbConnection1);
//cmdresults = OleDbCommand1.ExecuteNonQuery();
OleDbDataAdapter sda = new OleDbDataAdapter("Select class from banji Where grade=" + systemselectname + " order by ID ", oleDbConnection1); DataTable dt = new DataTable();
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
oleDbConnection1.Close();
return dt; }
catch
{
return null;
}
}
[AjaxPro.AjaxMethod]
public DataTable xuekeName(string systemselectname)
{
try
{
OleDbConnection oleDbConnection1 = new OleDbConnection(@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""D:\liuhai\wangscore\studentscore.mdb"";Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1");
oleDbConnection1.Open(); OleDbDataAdapter sda = new OleDbDataAdapter("Select 学科 from xueke Where 年级=" + systemselectname + " order by ID ", oleDbConnection1); DataTable dt = new DataTable();
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(dt);
oleDbConnection1.Close();
return dt; }
catch
{
return null;
}
}
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
m_selectedValue = Request.QueryString["Temp"] == null ?
string.Empty : Request.QueryString["Temp"].ToString(); Label2.Text = m_selectedValue+"945";
GridView1.Columns[1].HeaderText = ((HtmlInputHidden)((System.Web.UI.Page)System.Web.HttpContext.Current.Handler).FindControl("xmlabel")).Value.ToString();
GridView1.AutoGenerateColumns = false;
if (!IsPostBack)
{
banjiDropDownList.DataSource = TeamName(nianjiDropDownList.SelectedItem.Value.Trim());
banjiDropDownList.DataTextField = "class";
banjiDropDownList.DataValueField = "class";
banjiDropDownList.DataBind(); xuekeDropDownList.DataSource = xuekeName(nianjiDropDownList.SelectedItem.Value.Trim());
xuekeDropDownList.DataTextField = "学科";
xuekeDropDownList.DataValueField = "学科";
xuekeDropDownList.DataBind();
this.nianjiDropDownList.Attributes.Add("onclick", "GetTeamList();");
this.xuekeDropDownList.Attributes.Add("onclick", "getData()");
this.xianshishengButton.Attributes.Add("onclick","return test();");
this.baocunButton.Attributes.Add("onclick", "return _confirm();");
}
}