using System;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DeiNiu.wms.Logical;
using DeiNiu.Utils;
public partial class ProjectsQuery : PageBase
{
    private LProject _logic;
    protected void Page_Load(object sender, EventArgs e)
    {
  
        if (!IsPostBack)
        {
            btnYear.Text = DateTime.Today.Year.ToString();
            rdblstMonth.SelectedItem.Selected = false;
            rdblstMonth.Items.FindByValue(DateTime.Today.Month.ToString()).Selected = true;
       
            _logic = new LProject();
            bindDeptEmp();
            Databound();
        }
        SessionSeting();
    }
 
    /*****************************************   private methods   ******************************************/
    /// 
    /// bound the query list.
    /// 
    private void Databound()
    { 
        DataView dv2 = _logic.GetSumProjectsByYearMonth(btnYear.Text, rdblstMonth.SelectedValue).DefaultView;
        if ( TreeDeptEmp.SelectedNode !=null && TreeDeptEmp.SelectedNode.Value!="0")
        {
          string  selectedValue = TreeDeptEmp.SelectedValue;
            string wherecls = "ID= '" + selectedValue + "'";
          if (TreeDeptEmp.SelectedNode.Text.StartsWith("."))
          {
              wherecls = "ID= '" + selectedValue + "'";
          }
          dv2.RowFilter = wherecls;
       } 
 
        GridView1.DataSource = dv2 ;
        GridView1.DataBind();
        if (GridView1.DataKeys != null && GridView1.DataKeys.Count>0 && GridView1.SelectedIndex!=-1)
        { 
            Databound( GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString());
        }else
        {
            GridView2.DataSource = null;
            GridView2.DataBind();
        }
            
     
       
        UpdateSession();
    // btnSubmit.Enabled = false;
      //  ClearDetail();
    }
    private void Databound(string empId)
    {
       // if (empId == null) throw new ArgumentNullException("empId");
        if (empId == null) return;
        DataView dv = _logic.GetAllProjectDetail(Convert.ToInt32(empId),btnYear.Text, rdblstMonth.SelectedValue).DefaultView;
        GridView2.DataSource = dv;
        GridView2.DataBind();
        
    }
    /// 
    /// 绑定部门及用户
    /// 
    private void bindDeptEmp()
    {
       // TreeDeptEmp.Nodes.Clear();
        BindEmpTree(TreeDeptEmp, "0", TreeDeptEmp.SelectedNode,lem.GetDepartments().DefaultView, lem.GetActivedEmpDept().DefaultView);
    }
    public void BindEmpTree(TreeView tree, string id, TreeNode pNode, DataView deptdv, DataView empdv)
    {
        deptdv.RowFilter = "dep_mastdept = '" + id + "'";
        foreach (DataRowView row in deptdv)
        {
            TreeNode node = new TreeNode();
            node.Text = "" + row["dep_name"] + "";
            node.Value = row["ID"].ToString(); 
            node.ShowCheckBox = false;
            node.Expanded = true;
            empdv.RowFilter = "de_dept=" + node.Value;
            foreach (DataRowView emrow in empdv)
            {
                TreeNode tnEmp = new TreeNode(    "."+emrow["em_name"]   , emrow["ID"].ToString());
                node.ChildNodes.Add(tnEmp);
            }
            if (pNode == null)
            //说明是根节点
            {
                tree.Nodes.Add(node);
            }
            else
            {
                pNode.ChildNodes.Add(node);
            }
            BindEmpTree(tree, node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table));
        }
    }
    void setTreeDeptEmpSelected(string toFind,TreeNode nd)
    {
        foreach (TreeNode cnd in nd.ChildNodes)
        {
            if (cnd.Value == toFind) 
            {
                cnd.Selected = true;
                break;
            }
            else
            {
                setTreeDeptEmpSelected(toFind,cnd);
            }
        }
    }
    private void SessionSeting()
    {
        if (IsPostBack)
        {
            _logic = (LProject)Session[appScope.PagelevelObj];
        }
    }
    private void UpdateSession()
    {
        Session[appScope.PagelevelObj] = _logic;
    }
  
    protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
    {
    }
   
   
    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 GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView2.PageIndex = e.NewPageIndex;
        Databound();
        //GridView1.DataSource = shiftLgc.getAllShifts().Tables[0];
        //     GridView1.DataBind();    
    }
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
    }
   
   
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
     {
        Databound();
       
    }
 
    protected void TreeDeptEmp_SelectedNodeChanged(object sender, EventArgs e)
    {
        GridView1.SelectedIndex = -1;
        Databound();
       
    }
    protected void rdblstMonth_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridView1.SelectedIndex = -1;
        Databound();
    }
    protected void TxtBtnYear_TextChanged(object sender, EventArgs e)
    {
        //  btnYear.Text = TxtBtnYear.Text;
        rdblstMonth.SelectedItem.Selected = false;
        rdblstMonth.Items[0].Selected = true;
        Databound();
    }
    protected void Page_Init()
    {
        PostBackTrigger trigger = new PostBackTrigger();
        trigger.ControlID = Button1.UniqueID;
        ((UpdatePanel)Master.FindControl("UpdatePanel1")).Triggers.Add(trigger);
        trigger = new PostBackTrigger();
        trigger.ControlID = Button2.UniqueID;
        ((UpdatePanel)Master.FindControl("UpdatePanel1")).Triggers.Add(trigger);
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
    protected void Excel_Click(object sender, EventArgs e)
    {
        Master.ScriptMgr.RegisterPostBackControl(Button1);
        GridView1.AllowPaging = false;
        GridView1.Columns[GridView1.Columns.Count-1].Visible = false;
        Databound();
        Export1("application/ms-excel", "项目汇总列表.xls");
        GridView1.AllowPaging = false;
        GridView1.Columns[GridView1.Columns.Count - 1].Visible = true;
        Databound();
    }
    protected void Excel_Click2(object sender, EventArgs e)
    {
        Master.ScriptMgr.RegisterPostBackControl(Button1);
        GridView2.AllowPaging = false;
        
        Databound();
        Export2("application/ms-excel", "项目明细列表.xls");
        GridView2.AllowPaging = false;
        
        Databound();
    }
    private void Export1(string FileType, string FileName)
    {
        Response.Charset = "GB2312";
        Response.ContentEncoding = Encoding.UTF7;
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType = FileType;
        EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        GridView1.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();
    }
    private void Export2(string FileType, string FileName)
    {
        Response.Charset = "GB2312";
        Response.ContentEncoding = Encoding.UTF7;
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType = FileType;
        EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        GridView2.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();
    }
}