用代表部门的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;
}