월별 직원 보고서를 생성하고 싶습니다. 그러나 나는 이것을 할 수 없다. 나는 단지 이것을하려고 노력한다. 그러나 마지막 직원 레코드 만 반환합니다.여러 명의 직원에 대한 보고서를 생성하고 싶습니다
목록 상자를 사용하여 보고서를 생성하려면 여러 명의 직원을 선택하십시오. 그러나 나는 그것을 할 수 없다. 그 마지막에 선택된 직원의 출력을 리턴
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
위의 보고서는 목록 상자에서 마지막으로 선택한 직원입니다 ... 이런 식이다. 나는 위의 머리와 작은 휴식을 가진 모든 직원에 대한 보고서의이 종류를 ... 원하는
데이터보기의 마지막 직원 이름 인 "표현식"이외의 모든 것을 필터링하는 것처럼 보입니다. – Bit
디버깅을 시도했는지, 루핑 중인지 확인 했습니까? – Ravia
디버깅했지만 첫 번째 목록의 데이터를 마지막으로 읽지 만 마지막 레코드가있는 데이터 집합 만 마지막으로 읽습니다. 그래서 모든 루핑 값을 단일 데이터 세트에 저장할 수있는 방법을 묻는 것입니다. – Fernando