using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using ZhangPu.Gov.Logical;
using Tracen.Utils;
public partial class DeptMain : PageBase
{
private LDepartment _logic;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_logic = new LDepartment();
Databound();
}
SessionSeting();
}
/***************************************** private methods ******************************************/
///
/// bound the query list.
///
private void Databound()
{
//绑定部门列表
drplstDept.DataSource = _logic.GetAllActiveData();
drplstDept.DataTextField = "dep_name";
drplstDept.DataValueField = "pk_department";
drplstDept.DataBind();
drplstDept.Items.Insert(0, (new ListItem("张浦镇", "0")));
drplstDept.SelectedItem.Selected = false;
drplstDept.Items.FindByText("张浦镇").Selected = true;
//绑定部门人员列表
DropDownList1.DataSource = _logic.GetEmployees();
DropDownList1.DataTextField = "em_name";
DropDownList1.DataValueField = "pk_employee";
DropDownList1.DataBind();
DropDownList1.Items.Insert(0,(new ListItem("请选择...","0")));
DropDownList1.SelectedItem.Selected = false;
DropDownList1.Items.FindByText("请选择...").Selected = true;
//装载选定部门节点的部门数据
DataView dv = new DataView(_logic.GetAllActiveData());
string selectedValue = TreeDept.SelectedValue;
TreeDept.Nodes.Clear();
TreeDept.Nodes.Add(new TreeNode("张浦镇","0"));
TreeDept.Nodes[0].Expanded = true;
BindTree("0", TreeDept.Nodes[0], dv);
// TreeDept.SelectedNode.ChildNodes.Clear();
// BindTree(TreeDept.SelectedValue, TreeDept.SelectedNode, dv);
// TreeDept.Nodes.AddAt(0, new TreeNode("张浦镇", "0"));
if (selectedValue =="0") TreeDept.Nodes[0].Selected = true;
else
{
setTreeDeptSelected(selectedValue, TreeDept.Nodes[0]);
}
//绑定树列表里选中的部门下的所有部门数据
dv.RowFilter = "dep_mastdept = '" + selectedValue + "'";
GridView1.DataSource = dv;
GridView1.DataBind();
UpdateSession();
// btnSubmit.Enabled = false;
// ClearDetail();
drplstDept.Items.Clear();
initializeDrlstDept(TreeDept.Nodes, drplstDept ,"");
}
void initializeDrlstDept(TreeNodeCollection nds, DropDownList drplist, string emptyString)
{
foreach (TreeNode nd in nds)
{
ListItem li = new ListItem(emptyString + nd.Text,nd.Value);
drplist.Items.Add(li);
string NextemptyString = emptyString+ "----";
foreach (TreeNode nd1 in nd.ChildNodes)
{
li = new ListItem(NextemptyString + nd1.Text, nd1.Value);
drplist.Items.Add(li);
if (nd1.ChildNodes.Count > 0)
{
NextemptyString +="----";
initializeDrlstDept(nd1.ChildNodes, drplist, NextemptyString);
}
}
}
}
void setTreeDeptSelected(string toFind,TreeNode nd)
{
foreach (TreeNode cnd in nd.ChildNodes)
{
if (cnd.Value == toFind)
{
cnd.Selected = true;
break;
}
else
{
setTreeDeptSelected(toFind,cnd);
}
}
}
private void SessionSeting()
{
if (IsPostBack)
{
_logic = (LDepartment)Session[appScope.PagelevelObj];
}
}
private void UpdateSession()
{
Session[appScope.PagelevelObj] = _logic;
}
///
/// set data from shift object to page
///
private void DetailDataBind()
{
DataDetail.Visible = true;
txtDepName.Text = _logic.GetDepartment.dep_name ;
txtDepcode.Text = _logic.GetDepartment.dep_code;
txtDepDesc.Text = _logic.GetDepartment.dep_desc;
txtDepType.Text = _logic.GetDepartment.dep_type;
DropDownList1.SelectedItem.Selected = false;
if(DropDownList1.Items.FindByValue(_logic.GetDepartment.dep_manager.ToString())!=null)
{
DropDownList1.Items.FindByValue(_logic.GetDepartment.dep_manager.ToString()).Selected = true;
}
drplstDept.SelectedItem.Selected = false;
if (drplstDept.Items.FindByValue(_logic.GetDepartment.dep_mastdept.ToString()) != null)
{
drplstDept.Items.FindByValue(_logic.GetDepartment.dep_mastdept.ToString()).Selected = true;
}
// chkStatus.Checked = _logic.GetRole.dr;
}
/************************************** protected methods (event listeners) ********************************/
protected void btnAddnew_Click(object sender, EventArgs e)
{
chgOperTxt(true);
_logic.Initialize();
DetailDataBind();
GridView1.SelectedIndex = -1;
Databound();
drplstDept.SelectedItem.Selected = false;
if (drplstDept.Items.FindByValue(TreeDept.SelectedNode.Value) != null)
{
drplstDept.Items.FindByValue(TreeDept.SelectedNode.Value).Selected = true;
}
}
protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
{
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
chgOperTxt(false);
if (GridView1.DataKeys != null)
{
string id = GridView1.DataKeys[e.NewEditIndex].Value.ToString();
_logic.Initialize(int.Parse(id));
}
Databound();
DetailDataBind();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
SetDataBack();
//shifts id eq 0 means this is new one,to add; else an old one, to update
int oper = 0;
oper = _logic.GetDepartment.ID > 0 ? _logic.GetDepartment.Update() : _logic.GetDepartment.Add();
ClearDetail();
Databound();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (GridView1 != null)
{
if (GridView1.DataKeys != null)
{
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
_logic.Initialize(int.Parse(id));
}
}
/*
_logic.GetRole.dr = false;
_logic.GetRole.Update();
*/
_logic.GetDepartment.Delete();
ClearDetail();
Databound();
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
Databound();
//GridView1.DataSource = shiftLgc.getAllShifts().Tables[0];
// GridView1.DataBind();
}
protected void GridView1_DataBinding(object sender, EventArgs e)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
/*
CheckBox chk;
if (e.Row.RowType == DataControlRowType.DataRow)
{
chk = new CheckBox();
chk.Text = "激活";
chk.Enabled = false;
chk.Checked = e.Row.Cells[3].Text.Trim().Equals("1");
e.Row.Cells[3].Controls.Add(chk);
}
*/
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
}
//reset the page
protected void btnCancel_Click(object sender, EventArgs e)
{
_logic.Initialize();
Page_Load(this, e);
}
/***************************************** internal methods ********************************************/
///
/// set data from page to shift object
///
private void SetDataBack()
{
// _logic.GetRole.operater = Session["CurrentUserID"].ToString(); todo: write a public method to handle operater,createtime,lastmodfied ... log info.
if (!(_logic.GetDepartment.ID > 0 ))
{
_logic.GetDepartment.lastmodified = DateTime.Now.ToString();
_logic.GetDepartment.dep_mastdept = Convert.ToInt32(TreeDept.SelectedValue);
}
_logic.GetDepartment.dr = true;
_logic.GetDepartment.dep_name = txtDepName.Text;
_logic.GetDepartment.dep_desc = txtDepDesc.Text;
_logic.GetDepartment.dep_code = txtDepcode.Text;
_logic.GetDepartment.dep_type = txtDepType.Text;
if (DropDownList1.SelectedItem != null ) _logic.GetDepartment.dep_manager = Convert.ToInt32(DropDownList1.SelectedValue);
if (drplstDept.SelectedItem != null) _logic.GetDepartment.dep_mastdept = Convert.ToInt32(drplstDept.SelectedValue);
}
private void chgOperTxt(bool addNew)
{
DataDetail.Visible = true;
lbEdit.Text = addNew ? "增加新记录" : "修改现有记录";
btnSubmit.Enabled = true;
}
private void ClearDetail()
{
txtDepName.Text = "";
txtDepcode.Text = "";
txtDepDesc.Text = "";
txtDepType.Text ="";
DataDetail.Visible = false;
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
chgOperTxt(false);
if (GridView1.DataKeys != null)
{
string id = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString();
_logic.Initialize(int.Parse(id));
}
Databound();
DetailDataBind();
}
public void BindTree(string id, TreeNode pNode, DataView dv)
{
dv.RowFilter = "dep_mastdept = '" + id + "'";
foreach (DataRowView row in dv)
{
TreeNode node = new TreeNode();
node.Text = row["dep_name"].ToString();
node.Value = row["pk_department"].ToString();
if (pNode == null)
//说明是根节点
{
TreeDept.Nodes.Add(node);
node.Expanded = true;
}
else
{
pNode.ChildNodes.Add(node);
node.Expanded = true;
}
BindTree(node.Value, node, new DataView(dv.Table));
}
}
protected void TreeDept_SelectedNodeChanged(object sender, EventArgs e)
{
GridView1.SelectedIndex = -1;
DataView dv = new DataView(_logic.GetAllActiveData());
dv.RowFilter = "dep_mastdept = '" + TreeDept.SelectedValue + "'";
GridView1.DataSource = dv;
GridView1.DataBind();
ClearDetail();
}
}