[着急]一个页面有两个二级联动菜单,单独用其中一个都可以用,一起却不能用?? 两个联动1\分类2\城市地区从是从表中读出来的,原理一样.不知道为什么?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 初始化语句写到ispostback里面了么? 写了,两个DropDownList是不是要放在ispostback外 楼主代码是不是一个写好了,然后直接复制粘贴另外一个?如果是的话检查一下函数名字后面的handles控件是不是忘记改名了我经常是后面都是handles dropdownlist1 private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(Request.Cookies["Admin_ID"]==null) { Response.Redirect("../ManagerLogin.aspx"); Response.End(); } ReWriteScript(); DataBinds(ClassID,NclassID,"sp_GetClass","Sp_GetNclassBYclassID"); ReWriteScriptProvince(); DataBinds(ProvinceID,CityID,"sp_GetClassProvince","Sp_GetNclassBYclassIDProvince"); if(!Page.IsPostBack) { Config config=new Config(); config.BindControl("唐代,宋代","唐代,宋代",Years); config.BindControl("1W-2W,2W-3W","1W-2W,2W-3W",Price); } }------------------------------------------------------------------private void ReWriteScript() { int countP=0; string scriptStringP="<Script Language=JavaScript>\n var onecountP;"; scriptStringP +="\nonecountP=0;"; scriptStringP +="\nsubcatP=new Array();"; SqlDataReader rs1=register.GetNclass(CommandType.StoredProcedure,"sp_GetNClass"); while(rs1.Read()) { scriptStringP +="\n subcatP["+countP+"]=new Array("+"'"+rs1["ColumnName"]+"'"+","+"'"+rs1["ColumnParentID"]+"'"+","+"'"+rs1["ColumnID"]+"'"+");"; countP++; } rs1.Close(); scriptStringP +="\n onecountP="+countP+";"; scriptStringP +="\n function changelocation(locationid){"; scriptStringP +="\n document.Form1.NclassID.length = 0;"; scriptStringP +="\n var locationid=locationid;"; scriptStringP +="\n var Z;"; scriptStringP +="\n for(Z=0; Z<onecountP; Z++){"; scriptStringP +="\n if(subcatP[Z][1]==locationid){"; scriptStringP +="\n document.Form1.NclassID.options[document.Form1.NclassID.length]=new Option(subcatP[Z][0],subcatP[Z][2]);"; scriptStringP +="\n }"; scriptStringP +="\n }"; scriptStringP +="\n }"; scriptStringP +="<"; scriptStringP +="/"; scriptStringP +="script>"; if(!this.IsClientScriptBlockRegistered("clientScript")) { this.RegisterClientScriptBlock("clientScript",scriptStringP); } }------------------------------------------------------------------------------- private void ReWriteScriptProvince() { int count=0; string scriptString="<Script Language=JavaScript>\n var onecount;"; scriptString +="\nonecount=0;"; scriptString +="\nsubcat=new Array();"; SqlDataReader rs=register.GetNclass(CommandType.StoredProcedure,"sp_GetNClassProvince"); while(rs.Read()) { scriptString +="\n subcat["+count+"]=new Array("+"'"+rs["ColumnName"]+"'"+","+"'"+rs["ColumnParentID"]+"'"+","+"'"+rs["ColumnID"]+"'"+");"; count++; } rs.Close(); scriptString +="\n onecount="+count+";"; scriptString +="\n function changelocationProvince(locationid){"; scriptString +="\n document.Form1.CityID.length = 0;"; scriptString +="\n var locationid=locationid;"; scriptString +="\n var i;"; scriptString +="\n for(i=0; i<onecount; i++){"; scriptString +="\n if(subcat[i][1]==locationid){"; scriptString +="\n document.Form1.CityID.options[document.Form1.CityID.length]=new Option(subcat[i][0],subcat[i][2]);"; scriptString +="\n }"; scriptString +="\n }"; scriptString +="\n }"; scriptString +="<"; scriptString +="/"; scriptString +="script>"; if(!this.IsClientScriptBlockRegistered("clientScript")) { this.RegisterClientScriptBlock("clientScript",scriptString); } } private void DataBinds(DropDownList BClass,DropDownList SClass,string sp1,string sp2) { DataTable dt=register.Getclass("Getclass",CommandType.StoredProcedure,sp1).Tables[0]; //获得大类列表 BClass.DataSource=dt; BClass.DataTextField="ColumnName"; BClass.DataValueField="ColumnID"; BClass.DataBind(); DataTable dtn=register.Getnclass(int.Parse(BClass.SelectedItem.Value),sp2).Tables[0]; //根据大类列表默认选中项读出所属的小类列表 SClass.DataSource=dtn; SClass.DataTextField="ColumnName"; SClass.DataValueField="ColumnID"; SClass.DataBind(); } 代码应该是没有问题!问题出在:DataTable dt=register.Getclass("Getclass",CommandType.StoredProcedure,sp1).Tables[0]; //获得大类列表跟:DataTable dtn=register.Getnclass(int.Parse(BClass.SelectedItem.Value),sp2).Tables[0]; //根据大类列表默认选中项读出所属的小类列表中.你把你的.Tables[0]换成.Tables["表名"]就可以了.你的问题是你的DataSet中执行了上一个联动而没有及时释放掉,所以单个就ok两个就不行了. 有关cache缓存设置的写法,帮忙看看 GridView在服务器端实现分页的问题 用WEB控件实现桌面程序中多个输入保存在页面,然后一次发回服务器处理? 上一次登录时间,怎么实现? 我想申请一个免费的.NET空间,请问在哪儿申请啊? 登录问题 哪位大哥能推荐一本好的三层结构的书,或者能提供一些简单的例子吗? xsl如何实现筛选后分页 大家给一个开发WEB项目技术路线吧 出現錯誤信息"因為保護層級,無法存取 'System.Web.UI.WebControls.TableRow.cells'"如何處理? 为什么我的IE看不到任何网页图标了? 发布网页时总出错,高手们啊请出手帮忙
如果是的话检查一下函数名字后面的handles控件是不是忘记改名了
我经常是后面都是handles dropdownlist1
{
// 在此处放置用户代码以初始化页面
if(Request.Cookies["Admin_ID"]==null)
{
Response.Redirect("../ManagerLogin.aspx");
Response.End();
}
ReWriteScript();
DataBinds(ClassID,NclassID,"sp_GetClass","Sp_GetNclassBYclassID");
ReWriteScriptProvince();
DataBinds(ProvinceID,CityID,"sp_GetClassProvince","Sp_GetNclassBYclassIDProvince");
if(!Page.IsPostBack)
{
Config config=new Config();
config.BindControl("唐代,宋代","唐代,宋代",Years);
config.BindControl("1W-2W,2W-3W","1W-2W,2W-3W",Price);
}
}------------------------------------------------------------------
private void ReWriteScript()
{
int countP=0;
string scriptStringP="<Script Language=JavaScript>\n var onecountP;";
scriptStringP +="\nonecountP=0;";
scriptStringP +="\nsubcatP=new Array();";
SqlDataReader rs1=register.GetNclass(CommandType.StoredProcedure,"sp_GetNClass");
while(rs1.Read())
{
scriptStringP +="\n subcatP["+countP+"]=new Array("+"'"+rs1["ColumnName"]+"'"+","+"'"+rs1["ColumnParentID"]+"'"+","+"'"+rs1["ColumnID"]+"'"+");";
countP++;
}
rs1.Close();
scriptStringP +="\n onecountP="+countP+";";
scriptStringP +="\n function changelocation(locationid){";
scriptStringP +="\n document.Form1.NclassID.length = 0;";
scriptStringP +="\n var locationid=locationid;";
scriptStringP +="\n var Z;";
scriptStringP +="\n for(Z=0; Z<onecountP; Z++){";
scriptStringP +="\n if(subcatP[Z][1]==locationid){";
scriptStringP +="\n document.Form1.NclassID.options[document.Form1.NclassID.length]=new Option(subcatP[Z][0],subcatP[Z][2]);";
scriptStringP +="\n }";
scriptStringP +="\n }";
scriptStringP +="\n }";
scriptStringP +="<";
scriptStringP +="/";
scriptStringP +="script>";
if(!this.IsClientScriptBlockRegistered("clientScript"))
{
this.RegisterClientScriptBlock("clientScript",scriptStringP);
}
}-------------------------------------------------------------------------------
private void ReWriteScriptProvince()
{
int count=0;
string scriptString="<Script Language=JavaScript>\n var onecount;";
scriptString +="\nonecount=0;";
scriptString +="\nsubcat=new Array();";
SqlDataReader rs=register.GetNclass(CommandType.StoredProcedure,"sp_GetNClassProvince");
while(rs.Read())
{
scriptString +="\n subcat["+count+"]=new Array("+"'"+rs["ColumnName"]+"'"+","+"'"+rs["ColumnParentID"]+"'"+","+"'"+rs["ColumnID"]+"'"+");";
count++;
}
rs.Close();
scriptString +="\n onecount="+count+";";
scriptString +="\n function changelocationProvince(locationid){";
scriptString +="\n document.Form1.CityID.length = 0;";
scriptString +="\n var locationid=locationid;";
scriptString +="\n var i;";
scriptString +="\n for(i=0; i<onecount; i++){";
scriptString +="\n if(subcat[i][1]==locationid){";
scriptString +="\n document.Form1.CityID.options[document.Form1.CityID.length]=new Option(subcat[i][0],subcat[i][2]);";
scriptString +="\n }";
scriptString +="\n }";
scriptString +="\n }";
scriptString +="<";
scriptString +="/";
scriptString +="script>";
if(!this.IsClientScriptBlockRegistered("clientScript"))
{
this.RegisterClientScriptBlock("clientScript",scriptString);
}
} private void DataBinds(DropDownList BClass,DropDownList SClass,string sp1,string sp2)
{
DataTable dt=register.Getclass("Getclass",CommandType.StoredProcedure,sp1).Tables[0]; //获得大类列表
BClass.DataSource=dt;
BClass.DataTextField="ColumnName";
BClass.DataValueField="ColumnID";
BClass.DataBind();
DataTable dtn=register.Getnclass(int.Parse(BClass.SelectedItem.Value),sp2).Tables[0]; //根据大类列表默认选中项读出所属的小类列表
SClass.DataSource=dtn;
SClass.DataTextField="ColumnName";
SClass.DataValueField="ColumnID";
SClass.DataBind();
}
问题出在:
DataTable dt=register.Getclass("Getclass",CommandType.StoredProcedure,sp1).Tables[0]; //获得大类列表
跟:
DataTable dtn=register.Getnclass(int.Parse(BClass.SelectedItem.Value),sp2).Tables[0]; //根据大类列表默认选中项读出所属的小类列表
中.
你把你的.Tables[0]换成.Tables["表名"]就可以了.
你的问题是你的DataSet中执行了上一个联动而没有及时释放掉,所以单个就ok两个就不行了.