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级联动,不受任何限制
最后的效果无下

通过这个接口可以很容易实现无刷新

转载于:https://www.cnblogs.com/ice5/archive/2006/09/29/517855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值