可以在网上搜出很多关于ICallbackEventHandler接口的知识介绍,基本上都带的是MSDN的例子
一下是我小改一下后的多级联动,注意几点,在.cs文件里一定要继承System.Web.UI.ICallbackEventHandler 才行,ICallbackEventHandler.RaiseCallbackEvent(String eventArgument) 的类型是void型,否则编译会出错
我只是实现了功能,数据库如下
多级联 .aspx代码如下
请选择
请选择
显示的时候我是追加的数据,开始是在后台绑定,出了点错误
以下是.cs代码
{
protected void Page_Load(object sender, EventArgs e)
{
ParentBind();
}
private string resualt;
private void ParentBind()
{
string str = "select distinct(ParentID) from Parent_Son order by ParentID";
DataSet ds = SqlBase.ExecuteSql4Ds(str);
SelParent.DataSource = ds;
SelParent.DataTextField = "ParentID";
SelParent.DataBind();
}
private string SonBind(string e)//绑定第二级
{
string str = "select distinct(SonID) from Parent_Son where ParentID="+e;
DataSet ds = SqlBase.ExecuteSql4Ds(str);
string s="";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
s += ds.Tables[0].Rows[i][0] + "|";
return s;
}
private string ChildBind(string e)//绑定第三级
{
string str = "select distinct(Child) from Parent_Son where SonID=" + e;
DataSet ds = SqlBase.ExecuteSql4Ds(str);
string s = "";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
s += ds.Tables[0].Rows[i][0] + "|";
return s;
}
void ICallbackEventHandler.RaiseCallbackEvent(String eventArgument)
{
if (eventArgument.Length == 1)//绑定第二级,我的数据库里分别是用1,11,111来代表三级,所以长度为一的就是一级,大家可以根据自己的需要把修改
{
string eventArgument1 = SonBind(eventArgument);
resualt = eventArgument1;
}
else
{
string eventArgument2 = ChildBind(eventArgument);
resualt = eventArgument2;
}
}
string ICallbackEventHandler.GetCallbackResult()
{
return resualt;
}
}
只需要做个循环就可以实现N级联动,不受任何限制
最后的效果无下
通过这个接口可以很容易实现无刷新