私は複数の従業員のための優れたレポートを生成したい

私は毎月の従業員レポートを生成したい。しかし、私はこれを行うことはできません。私はこれをやろうとします。しかし、それは最後の従業員レコードのみを返します。

リストボックスを使用し、複数の従業員を選択してレポートを生成しています。しかし、私はそれをすることはできません。

私の部分的なコッ...

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();

最後に選択した従業員の出力を返します。しかし、私はリストボックスからすべての従業員レコードを選択したい 私を助けてください... 私の出力は次のようなものです...

   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

上記のレポートは、最後に選択した従業員のリストボックスです。私は頭の上に小さな休憩を持つすべての従業員のためのこの種のレポートをしたい..

1
私はデバッグしましたが、最初のリストから最後までデータを読み取りますが、最後のレコードのみを持つデータセットを最後にします。だから、どのように私はすべてのループ値を単一のデータセットに格納することができます尋ねている。
追加された 著者 Fernando,
デバッグを試みて、ループしているかどうか確認しましたか?
追加された 著者 Ravia,
これは、データビュー上の最後の従業員名となる「式」以外のすべてを除外しているようです。
追加された 著者 Bit,

2 答え

こんにちは、私はこのリンクをチェックしてください同じこと 全体のコードとシナリオが記述されている、私はそれがあなたを助けると思う

ExcelのExport Gridview

1
追加された
ありがとうございます。私はこれをチェックします..
追加された 著者 Fernando,
しかし、私は単一のExcelファイル内のレコードのセットをループするためのレポートを生成したい。
追加された 著者 Fernando,
生成されたデータセットでグリッドをバインドするのと同じ方法で生成することができます。次に、私が行ったエクササイズを行います
追加された 著者 Rashmi Kant Shrivastwa,

Apache POIの.NET移植である NPOI を見てみることをお勧めします。このライブラリを使用すると、フロントエンドオブジェクト、MS Officeのインストールなどの他の依存関係なしに、APIからMS Officeファイルを生成することができます。

0
追加された