
Ext.ns("jackAccess");
jackAccess.jackComboBox = function() {
var trigger_users, store_users, trigger_departments, gridPanel_users, treePanel_departments, pageSize, reload = true;
pageSize = 20;
var store_users = new Ext.data.JsonStore({
method: "post", id: "store", url: '/Rsb_UserInfo/List', root: 'data',
fields: ['UserID', 'Card', 'badgeNumber', 'Name', 'Gender'],
totalProperty: 'totalCount', pruneModifiedRecords: true,
baseParams: { start: 0, limit: 100}//, remoteSort: true
});
var sm = new Ext.grid.CheckboxSelectionModel({ singleSelect: false, listeners: { "rowselect": function(sm) { setUsersValue(); } } });
function setUsersValue() {
var records = [];
var selectedData = gridPanel_users.getSelectionModel().getSelections();
for (var i = 0; i < selectedData.length; i++) { records.push(selectedData[i].get("UserID")); }
trigger_users.setValue(records);
}
gridPanel_users = new Ext.grid.GridPanel({
store: store_users, viewConfig: { forceFit: true }, width: 400, height: 450,
loadMask: true,
columns: [new Ext.grid.RowNumberer(), sm,
{ id: "badgeNumber", header: "编号", sortable: true, dataIndex: 'badgeNumber' },
{ header: "姓名", sortable: true, dataIndex: 'Name' },
{ header: "职务类型", width: 200, sortable: true, dataIndex: 'title' }
],
sm: sm,
tbar: [new Ext.ux.form.SearchField({ store: store_users }), new Ext.Toolbar.Fill(), { iconCls: "close", handler: function() { trigger_users.menu.hide(); } }],
bbar: new Ext.PagingToolbar({ pageSize: 100, store: store_users, displayInfo: true, displayMsg: '总记录数 {0} - {1} of {2}', emptyMsg: "没有记录" })
});
trigger_users = new Ext.form.TriggerField({ editable: true, name: "badgeNumber", fieldLabel: "员工编号",
onTriggerClick: function(thiss) {
if (this.menu == null) {
this.menu = new Ext.menu.Menu({ items: [gridPanel_users] });
}
if (reload) {
store_users.baseParams['deptid'] = trigger_departments.getRawValue();
store_users.load();
reload = false;
}
this.menu.show(this.el);
}
});
//树形部门数据
loader = new Ext.tree.TreeLoader({});
tree = new Ext.tree.TreePanel({
loader: loader, draggable: false, expanded: true,
name: 'combodepartments',
rootVisible: false, width: 300, height: 400, autoScroll: true,
listeners: { "checkchange": function(node, checked) {
var parentNode = node.parentNode;
if (parentNode !== null) {
parentCheck(parentNode, checked);
}
node.expand();
node.attributes.checked = checked;
node.eachChild(function(child) {
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
child.fireEvent('checkchange', child, checked);
});
var checkedNodes = tree.getChecked('id'); //; //
trigger_departments.setValue(checkedNodes);
reload = true;
}
}
});
var childHasChecked = function(node) {
var childNodes = node.childNodes;
if (childNodes || childNodes.length > 0) {
for (var i = 0; i < childNodes.length; i++) {
if (childNodes[i].getUI().checkbox.checked)
return true;
}
}
return false;
}
var parentCheck = function(node, checked) {
var checkbox = node.getUI().checkbox;
if (typeof checkbox == 'undefined')
return false;
if (!(checked ^ checkbox.checked))
return false;
if (!checked && childHasChecked(node))
return false;
checkbox.checked = checked;
node.attributes.checked = checked;
node.getOwnerTree().fireEvent('check', node, checked);
var parentNode = node.parentNode;
if (parentNode !== null) {
parentCheck(parentNode, checked);
}
}
root = new Ext.tree.AsyncTreeNode({
id: '1',
text: "我的菜单"
});
tree.setRootNode(root);
tree.rootVisible = false;
tree.on("beforeload", function(node) {
loader.dataUrl = "Rsb_DepartMents/list";
loader.baseParams.type = "dynamicLoadTreePanel";
loader.baseParams.fid = node.id;
});
tree.rootVisible = false;
var sm = new Ext.grid.CheckboxSelectionModel();
trigger_departments = new Ext.form.TriggerField({ editable: true, name: "badgeNumber", fieldLabel: "员工编号",
onTriggerClick: function(thiss) {
if (this.menu == null) {
this.menu = new Ext.menu.Menu({ items: [tree] });
}
this.menu.show(this.el);
}
});
return { users: function() { return trigger_users; },
departments: function() { return trigger_departments; }
};
}