private void PopulateDataGrid() { // get the data from database DataTable dtData = new DataTable(); dtData = GetTimeEntryData(); DataTable dt = GetTimeTableSchema(); Boolean bNew = false; StoneTimeBusiness.TimeEntryFunctions ui = new StoneTimeBusiness.TimeEntryFunctions(); string strUser = SelectedUserId.ToString(); int ItemIndex = 0; // to hold the project or task or phase id string ItemName = string.Empty; // item//s name foreach (DataRow drData in dtData.Rows) { DataRow dr; // Determine if there is a row already for the Key: Project+Phase+Task+Billable DataRow[] drA; string strKey = drData["PROJECT_ID"] + "," + drData["PHASE_ID"] + "," + drData["TASK_ID"] + "," + drData["BILLABLE"]; // ok... the next select statement is not working... we are getting duplicate records coming thru Boolean billable = false; if (drData["BILLABLE"] == DBNull.Value) { billable = false; } else { billable = Convert.ToBoolean(drData["BILLABLE"]); } drA = dt.Select("PROJECT = " + drData["PROJECT_ID"] + " AND MILESTONE = " + drData["PHASE_ID"] + " AND TASK = " + drData["TASK_ID"] + " AND BILLABLE = " + billable.ToString()); // I am adding code to loop through and check each one... dr = dt.NewRow(); //Boolean exists = false; //DataRow[] drAdt; //drAdt= decimal oHours = Convert.ToDecimal(drData["HOURS"]); //decimal nhours = Convert.ToDecimal(dr["HOURS"]); //decimal oTotal = Convert.ToDecimal(drData["TOTAL"]); decimal nTotal = 0;// Convert.ToDecimal(dr["TOTAL"]); //decimal nMonday = 0; //if (drData["MONDAY"] != DBNull.Value) Convert.ToDecimal(drData["MONDAY"]); //decimal nTuesday = 0; //if (drData["TUESDAY"] != DBNull.Value) Convert.ToDecimal(drData["TUESDAY"]); //decimal nWednesday = 0; //if (drData["WEDNESDAY"] != DBNull.Value) Convert.ToDecimal(drData["WEDNESDAY"]); //decimal nThursday = 0; //if (drData["THURSDAY"] != DBNull.Value) Convert.ToDecimal(drData["THURSDAY"]); //decimal nFriday = 0; //if (drData["FRIDAY"] != DBNull.Value) Convert.ToDecimal(drData["FRIDAY"]); //decimal nSaturday = 0; //if (drData["SATURDAY"] != DBNull.Value) Convert.ToDecimal(drData["SATURDAY"]); //decimal nSunday = 0; //if (drData["SUNDAY"] != DBNull.Value) Convert.ToDecimal(drData["SUNDAY"]); if (drA.GetLength(0) > 0) { // the Key already exists in the table. Use this row. dr = drA[0]; bNew = false; } else { // the Key was not found. Create a new row dr = dt.NewRow(); dr["ID"] = strKey; if (drData["BILLABLE"] == DBNull.Value) { dr["BILLABLE"] = false; } else { dr["BILLABLE"] = Convert.ToBoolean(drData["BILLABLE"]); } dr["DURATION"] = oHours; ItemIndex = Convert.ToInt16(drData["TASK_ID"]); ItemName = ui.GetTaskName(ItemIndex, strUser); dr["TASK"] = drData["TASK_ID"]; dr["TASKNAME"] = ItemName; ItemIndex = Convert.ToInt16(drData["PHASE_ID"]); ItemName = ui.GetPhaseName(ItemIndex, strUser); dr["MILESTONE"] = drData["PHASE_ID"]; dr["PHASENAME"] = ItemName; ItemIndex = Convert.ToInt16(drData["PROJECT_ID"]); ItemName = ui.GetProjectName(ItemIndex, strUser); dr["PROJECT"] = ItemIndex; dr["PROJECTNAME"] = ItemName; dr["PERSON"] = drData["USER_ID"]; dr["TOTAL"] = 0; bNew = true; } decimal oMonday = 0; if (dr["MONDAY"] != DBNull.Value) oMonday = Convert.ToDecimal(dr["MONDAY"]); decimal oTuesday = 0; if (dr["TUESDAY"] != DBNull.Value) oTuesday = Convert.ToDecimal(dr["TUESDAY"]); decimal oWednesday = 0; if (dr["WEDNESDAY"] != DBNull.Value) oWednesday = Convert.ToDecimal(dr["WEDNESDAY"]); decimal oThursday = 0; if (dr["THURSDAY"] != DBNull.Value) oThursday = Convert.ToDecimal(dr["THURSDAY"]); decimal oFriday = 0; if (dr["FRIDAY"] != DBNull.Value) oFriday = Convert.ToDecimal(dr["FRIDAY"]); decimal oSaturday = 0; if (dr["SATURDAY"] != DBNull.Value) oSaturday = Convert.ToDecimal(dr["SATURDAY"]); decimal oSunday = 0; if (dr["SUNDAY"] != DBNull.Value) oSunday = Convert.ToDecimal(dr["SUNDAY"]); DateTime dtDate = Convert.ToDateTime(drData["BILL_DATE"].ToString()); //strip time?? int Difference = 0; DateTime dtA = MasterDate; //strip time?? Difference = dtDate.Subtract(dtA).Days; if (oHours > 0) { switch (Difference) { case 0: { if (oMonday == 0) { dr["Monday"] = oHours; dr["MonDescription"] = drData["DESCRIPTION"]; } else { dr["Monday"] = oMonday + oHours; } nTotal = oMonday + nTotal; MonTotal = MonTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 1: { if (oTuesday == 0) { dr["Tuesday"] = oHours; dr["TuesDescription"] = drData["DESCRIPTION"]; } else { dr["Tuesday"] = oTuesday + oHours; } nTotal = oTuesday + nTotal; TueTotal = TueTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 2: { if (oWednesday == 0) { dr["Wednesday"] = oHours; // 10/ dr["WedDescription"] = drData["DESCRIPTION"]; } else { dr["Wednesday"] = oWednesday + oHours; } nTotal = oWednesday + nTotal; WedTotal = WedTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 3: { if (oThursday == 0) { dr["Thursday"] = oHours; dr["ThursDescription"] = drData["DESCRIPTION"]; } else { dr["Thursday"] = oThursday + oHours; } nTotal = oThursday + nTotal; ThrTotal = ThrTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 4: { if (oFriday == 0) { dr["Friday"] = oHours; dr["FriDescription"] = drData["DESCRIPTION"]; } else { dr["Friday"] = oFriday + oHours; } nTotal = oFriday + nTotal; FriTotal = FriTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 5: { if (oSaturday == 0) { dr["Saturday"] = oHours; dr["SatDescription"] = drData["DESCRIPTION"]; } else { dr["Saturday"] = oSaturday + oHours; } dr["Total"] = oSaturday + nTotal; SatTotal = SatTotal + oHours; WeekTotal = WeekTotal + oHours; break; } case 6: { if (oSunday == 0) { dr["Sunday"] = oHours; dr["SunDescription"] = drData["DESCRIPTION"]; } else { dr["Sunday"] = oSunday + oHours; } nTotal = oSunday + nTotal; SunTotal = SunTotal + oHours; WeekTotal = WeekTotal + oHours; break; } } } else { bNew = false; } if (bNew == true) { dt.Rows.Add(dr); } } dt.AcceptChanges(); gvTime.DataSource = dt; gvTime.DataBind(); if (Locked(MasterDate)) { gvTime.Enabled = false; } else { gvTime.Enabled = true; } //ViewState["MonTotal"] = MonTotal; //VeiwState["TueTotal"] = TueTotal; //VeiwState["WedTotal"] = WedTotal; //VeiwState["ThrTotal"] = ThrTotal; //VeiwState["FriTotal"] = FriTotal; //VeiwState["SatTotal"] = SatTotal; //VeiwState["SunTotal"] = SunTotal; }