2012-02-06 3 views
1

월별 직원 보고서를 생성하고 싶습니다. 그러나 나는 이것을 할 수 없다. 나는 단지 이것을하려고 노력한다. 그러나 마지막 직원 레코드 만 반환합니다.여러 명의 직원에 대한 보고서를 생성하고 싶습니다

목록 상자를 사용하여 보고서를 생성하려면 여러 명의 직원을 선택하십시오. 그러나 나는 그것을 할 수 없다. 그 마지막에 선택된 직원의 출력을 리턴

DataSet4TableAdapters.sp_getalltimesheetTableAdapter TA1 = new DataSet4TableAdapters.sp_getalltimesheetTableAdapter(); 
DataSet4.sp_getalltimesheetDataTable DS1 = TA1.GetData(); 
foreach (DataRow dr in DS1.Rows) 
{ 
    string name = Convert.ToString(dr["Employee_ID"]) + "-" + Convert.ToString(dr["Employee_Name"]); 
    for (int i = 0; i < lbxempname.Items.Count; i++) 
    { 
     if (lbxempname.Items[i].Selected) 
     { 
      string id = lbxempname.Items[i].Text; 
      if (name == id) 
      { 
       string expression = "Employee_Id='" + name.Substring(0,8) + "'and punchDate >=#" + txtstartdate.Text + "# and PunchDate <=#" + txtenddate.Text + "# "; 
       DataSet4TableAdapters.sp_getalltimesheetTableAdapter TA = new DataSet4TableAdapters.sp_getalltimesheetTableAdapter(); 
       DataSet4.sp_getalltimesheetDataTable DS = TA.GetData(); 
       if (DS.Rows.Count == 0) 
       { 
        ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('No records found');</script>", false); 
       } 
       else 
       { 
        DataView dataview = DS1.DefaultView; 
        dataview.RowFilter = expression; 
        Session["TaskTable"] = dataview; 
        grdvw = new GridView(); 
        grdvw.DataSource = Session["TaskTable"]; 
        grdvw.DataBind(); 
        dt = new DataTable(); 
        dt.Columns.Add("EmployeeId"); 
        dt.Columns.Add("EmployeeName"); 
        dt.Columns.Add("Department"); 
        dt.Columns.Add("Date"); 
        dt.Columns.Add("Day"); 
        dt.Columns.Add("Intime"); 
        dt.Columns.Add("Outtime"); 
        dt.Columns.Add("Late_After"); 
        dt.Columns.Add("Early_Before"); 
        dt.Columns.Add("Remarks"); 
        foreach (GridViewRow oItem in grdvw.Rows) 
        { 
         DataRow dr1 = dt.NewRow(); 
         string empid = oItem.Cells[0].Text; 
         string empname = oItem.Cells[1].Text; 
         string dept = oItem.Cells[2].Text; 
         string PunchDate = oItem.Cells[3].Text; 
         string Day = oItem.Cells[4].Text; 
         string intime = oItem.Cells[5].Text; 
         string outtime = oItem.Cells[6].Text; 

         groupdetails(empid, empname, PunchDate, dept, intime, outtime); 
         if (intime == "" || outtime == "") 
         { 
          remark = "A"; 
         } 
         else 
         { 
          remark = "P"; 
         } 
         dr1["EmployeeId"] = Convert.ToString(empid); 
         dr1["EmployeeName"] = Convert.ToString(empname); 
         dr1["Department"] = Convert.ToString(dept); 
         dr1["Date"] = Convert.ToString(PunchDate); 
         dr1["Day"] = Convert.ToString(Day); 
         dr1["Intime"] = Convert.ToString(intime); 
         dr1["Outtime"] = Convert.ToString(outtime); 
         dr1["Late_After"] = Convert.ToString(Session["late"].ToString()); 
         dr1["Early_Before"] = Convert.ToString(Session["early"].ToString()); 
         dr1["Remarks"] = Convert.ToString(remark); 
         dt.Rows.Add(dr1); 
         ViewState["new"] = dt; 

        } 
       } 
      } 

     } 

    } 
} 
grdvw.DataSource = ViewState["new"]; 
grdvw.DataBind(); 
System.IO.StringWriter stringwriter = new StringWriter(); 
HtmlTextWriter htmlwriter = new HtmlTextWriter(stringwriter); 
grdvw.RenderControl(htmlwriter); 
Response.Write(stringwriter.ToString()); 
Response.End(); 

내 부분 COD는 여기

... 하지만 난이 목록 상자 에서 선택한 모든 직원의 기록이 저를 도와주세요 싶어 ... 내 출력은

EmployeeId EmployeeName Department Date   Day  Intime  Outtime  Late_After Early_Before Remarks 
    00626243   HariharanJ SBS IT  01-04-2012 Wednesday 06:40:00 15:00:00 00:00  00:00   P 
    00626243   HariharanJ SBS IT  01-03-2012 Tuesday  00:00:00 14:40:00 00:00  00:05   P 
    00626243   HariharanJ SBS IT  01-05-2012 Thursday 07:00:00 14:35:00 00:20  00:10   P 

위의 보고서는 목록 상자에서 마지막으로 선택한 직원입니다 ... 이런 식이다. 나는 위의 머리와 작은 휴식을 가진 모든 직원에 대한 보고서의이 종류를 ... 원하는

+0

데이터보기의 마지막 직원 이름 인 "표현식"이외의 모든 것을 필터링하는 것처럼 보입니다. – Bit

+0

디버깅을 시도했는지, 루핑 중인지 확인 했습니까? – Ravia

+0

디버깅했지만 첫 번째 목록의 데이터를 마지막으로 읽지 만 마지막 레코드가있는 데이터 집합 만 마지막으로 읽습니다. 그래서 모든 루핑 값을 단일 데이터 세트에 저장할 수있는 방법을 묻는 것입니다. – Fernando

답변

1
나는이 링크 전체 코드 및 시나리오 설명을 확인하시기 바랍니다했을

안녕 같은 일, 나는 당신에게

도움이 될 것입니다 생각

Export Gridview in Excel

+0

고맙습니다 .. 이걸 확인해 보겠습니다. – Fernando

+0

하지만 단일 엑셀 파일의 레코드 집합을 반복적으로 반복하는 보고서를 생성하고 싶습니다. – Fernando

+0

동일한 방식으로 생성 된 데이터 집합으로 그리드를 바인딩 한 다음 내가 한 운동 –

0

NPOI, .NET의 Apache POI 포팅을 제안합니다. 이 라이브러리를 사용하면 프론트 엔드 오브젝트, MS Office 설치 등과 같은 다른 종속성없이 API에서 MS Office 파일을 생성 할 수 있습니다.

관련 문제