TreeList + <select />+Ajax实现按部门选择员工

来源:互联网 发布:移动硬盘怎么恢复数据 编辑:程序博客网 时间:2024/05/17 02:26

用代表部门的TreeList控件的FocusedNodeChanged事件不能直接产生对应的员工到select中,解决方法:要用到TreeList的ClientSideEvents事件,再加一个Ajax请求实现向select中添加员工

aspx代码:

<dxwtl:ASPxTreeList ID="treeList" runat="server" AutoGenerateColumns="False"
                oncustomdatacallback="treeList_CustomDataCallback"
                KeyFieldName="DepartmentID" ParentFieldName="ParentDepartmentID"
                Width="200px">
                <SettingsBehavior AllowFocusedNode="True" />
                <ClientSideEvents CustomDataCallback="function(s, e) {
                                                                                    window.department = e.result;
                                                                                    callAjax();
                                                                                }" FocusedNodeChanged="function(s, e) {
                                                                                    var key = treeList.GetFocusedNodeKey();
                                                                                    treeList.PerformCustomDataCallback(key);
                                                                                }" />
                <Columns>
                    <dxwtl:TreeListTextColumn Caption="部门编号" FieldName="DepartmentID"
                        Visible="False" VisibleIndex="0">
                    </dxwtl:TreeListTextColumn>
                    <dxwtl:TreeListTextColumn Caption="部门名称" FieldName="DepartmentName"
                        VisibleIndex="0">
                    </dxwtl:TreeListTextColumn>
                </Columns>
            </dxwtl:ASPxTreeList>

....

<select id="lbUsers" multiple="multiple" style="width:200px; height:260px;">
</select>

这里要编写javascript方法callAjax();

js代码:

<script type="text/javascript">
        function callAjax() {            
            $(document).ready(function() {
                var dpr = window.department;
                $.get("Ajax/GetUserHandler.ashx?r=" + Math.random(), "p=" + dpr, function(data) {                    
                    $("#lbUsers").empty().append(data);
                });
            });
        }

</script>

这里用Ajax来获得返回的员工数据,

treeList_CustomDataCallback事件是后台事件,要简单的实现一下:

cs代码:

protected void treeList_CustomDataCallback(object sender, TreeListCustomDataCallbackEventArgs e)
    {
        e.Result = e.Argument;
    }



原创粉丝点击