ICallbackEventHandler接口实现多级联动

在网上看到别人用ICallbackEventHandler接口实现无刷新,在MSDN里有源代码,没有涉及到AJAX技术。这个接口是。NET2。0才有的,于是将事例补充了一下,实现多级联动不刷新
可以在网上搜出很多关于ICallbackEventHandler接口的知识介绍,基本上都带的是MSDN的例子
一下是我小改一下后的多级联动,注意几点,在.cs文件里一定要继承System.Web.UI.ICallbackEventHandler 才行,ICallbackEventHandler.RaiseCallbackEvent(String eventArgument) 的类型是void型,否则编译会出错
我只是实现了功能,数据库如下

多级联 .aspx代码如下 

       
       
       

显示的时候我是追加的数据,开始是在后台绑定,出了点错误
以下是.cs代码
public partial class MultLink : System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
{
    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级联动,不受任何限制
最后的效果无下

通过这个接口可以很容易实现无刷新
posted @ 2006-09-29 09:35  乱炖er  阅读(1481)  评论(2编辑  收藏  举报