private void FillGrid()
        {
            table = EhrPatListElements.GetListOrderBy2014(elementList);
            int      colWidth = 0;
            Graphics g        = CreateGraphics();

            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col;

            col = new ODGridColumn("PatNum", 60, HorizontalAlignment.Center);
            col.SortingStrategy = GridSortingStrategy.AmountParse;
            gridMain.Columns.Add(col);
            col = new ODGridColumn("Full Name", 200);
            col.SortingStrategy = GridSortingStrategy.StringCompare;
            gridMain.Columns.Add(col);
            for (int i = 0; i < elementList.Count; i++)
            {
                switch (elementList[i].Restriction)
                {
                case EhrRestrictionType.Birthdate:
                    col = new ODGridColumn("Birthdate", 80, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    col = new ODGridColumn("Age", 80, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.AmountParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Gender:
                    col = new ODGridColumn("Gender", 80, HorizontalAlignment.Center);
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.LabResult:
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Lab Value: " + elementList[i].CompareString, this.Font).Width);
                    col.SortingStrategy = GridSortingStrategy.AmountParse;
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col = new ODGridColumn("Lab Value: " + elementList[i].CompareString, colWidth, HorizontalAlignment.Center);
                    gridMain.Columns.Add(col);
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Lab Date: " + elementList[i].CompareString, this.Font).Width);
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col                 = new ODGridColumn("Lab Date: " + elementList[i].CompareString, colWidth, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Medication:
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Prescription Date: " + elementList[i].CompareString, this.Font).Width);
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col                 = new ODGridColumn("Prescription Date: " + elementList[i].CompareString, colWidth, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Problem:
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Date Diagnosed: " + DiseaseDefs.GetNameByCode(elementList[i].CompareString), this.Font).Width);
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col                 = new ODGridColumn("Date Diagnosed: " + DiseaseDefs.GetNameByCode(elementList[i].CompareString), colWidth, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Allergy:
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Date Alergic Reaction: " + elementList[i].CompareString, this.Font).Width);
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col                 = new ODGridColumn("Date Alergic Reaction: " + elementList[i].CompareString, colWidth, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.CommPref:
                    col = new ODGridColumn("Communication Preference", 180, HorizontalAlignment.Center);
                    gridMain.Columns.Add(col);
                    break;
                }
            }
            //  colWidth=System.Convert.ToInt32(g.MeasureString(elementList[i].CompareString,this.Font).Width);
            //  colWidth=colWidth+(colWidth/10);//Add 10%
            //  if(colWidth<90) {
            //    colWidth=90;//Minimum of 90 width.
            //  }
            gridMain.Rows.Clear();
            ODGridRow row;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                row = new ODGridRow();
                row.Cells.Add(table.Rows[i]["PatNum"].ToString());
                row.Cells.Add(table.Rows[i]["LName"].ToString() + ", " + table.Rows[i]["FName"].ToString());
                //Add 3 to j to compensate for PatNum, LName and FName.
                int k = 0;                                  //added to j to iterate through the table columns as j itterates through the elementList
                for (int j = 0; j < elementList.Count; j++) //sometimes one element might pull two columns, Lab Results for instance.//<elementList.Count;j++) {
                {
                    switch (elementList[j].Restriction)
                    {
                    case EhrRestrictionType.Medication:
                    case EhrRestrictionType.Problem:
                    case EhrRestrictionType.Allergy:
                        row.Cells.Add(table.Rows[i][j + k + 3].ToString().Replace(" 12:00:00 AM", ""));                           //safely remove irrelevant time entries.//dates
                        break;

                    case EhrRestrictionType.Birthdate:
                        row.Cells.Add(table.Rows[i][j + k + 3].ToString().Replace(" 12:00:00 AM", "")); //safely remove irrelevant time entries.//date
                        row.Cells.Add(table.Rows[i][j + k + 4].ToString());                             //age
                        k++;                                                                            //to keep the count correct.
                        break;

                    case EhrRestrictionType.LabResult:
                        row.Cells.Add(table.Rows[i][j + k + 3].ToString());                             //obsVal
                        row.Cells.Add(table.Rows[i][j + k + 4].ToString().Replace(" 12:00:00 AM", "")); //safely remove irrelevant time entries.//date
                        k++;                                                                            //to keep the count correct.
                        break;

                    case EhrRestrictionType.Gender:
                        switch (table.Rows[i][j + k + 3].ToString())
                        {
                        case "0":                                        //Male
                            row.Cells.Add("Male");
                            break;

                        case "1":                                        //Female
                            row.Cells.Add("Female");
                            break;

                        case "2":                                        //Unknown
                        default:
                            row.Cells.Add("Unknown");
                            break;
                        }
                        break;

                    case EhrRestrictionType.CommPref:
                        switch (table.Rows[i][j + k + 3].ToString())
                        {
                        case "0":                                        //None
                            row.Cells.Add("None");
                            break;

                        case "1":                                        //DoNotCall
                            row.Cells.Add("Do Not Call");
                            break;

                        case "2":                                        //HmPhone
                            row.Cells.Add("Home Phone");
                            break;

                        case "3":                                        //WkPhone
                            row.Cells.Add("Work Phone");
                            break;

                        case "4":                                        //WirelessPh
                            row.Cells.Add("Wireless Phone");
                            break;

                        case "5":                                        //Email
                            row.Cells.Add("Email");
                            break;

                        case "6":                                        //SeeNotes
                            row.Cells.Add("See Notes");
                            break;

                        case "7":                                        //Mail
                            row.Cells.Add("Mail");
                            break;

                        case "8":                                        //TextMessage
                            row.Cells.Add("TextMessage");
                            break;
                        }
                        break;
                    }
                }
                gridMain.Rows.Add(row);
            }
            gridMain.EndUpdate();
            g.Dispose();
        }
        private void FillGrid()
        {
            table = EhrPatListElements.GetListOrderBy2014Retro(elementList);
            int      colWidth = 0;
            Graphics g        = CreateGraphics();

            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col;

            col = new ODGridColumn("PatNum", 60, HorizontalAlignment.Center);
            col.SortingStrategy = GridSortingStrategy.AmountParse;
            gridMain.Columns.Add(col);
            col = new ODGridColumn("Full Name", 200);
            col.SortingStrategy = GridSortingStrategy.StringCompare;
            gridMain.Columns.Add(col);
            for (int i = 0; i < elementList.Count; i++)
            {
                if (orderByColumn == -1 && elementList[i].OrderBy)
                {
                    //There can be 0 to 1 elements that have OrderBy set to true.
                    //we will use this to determine how to use the ASC/DESC buttons.
                    //some elements add one column, others add two, this selects the column that is to be added next.
                    orderByColumn = gridMain.Columns.Count;
                }
                switch (elementList[i].Restriction)
                {
                case EhrRestrictionType.Birthdate:
                    col = new ODGridColumn("Birthdate", 80, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.DateParse;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Gender:
                    col = new ODGridColumn("Gender", 80, HorizontalAlignment.Center);
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.LabResult:
                    colWidth            = System.Convert.ToInt32(g.MeasureString("Lab Value: " + elementList[i].CompareString, this.Font).Width);
                    col.SortingStrategy = GridSortingStrategy.AmountParse;
                    colWidth            = colWidth + (colWidth / 10);           //Add 10%
                    col = new ODGridColumn("Lab Value: " + elementList[i].CompareString, colWidth, HorizontalAlignment.Center);
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Medication:
                    col = new ODGridColumn("Medication", 90, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.StringCompare;
                    gridMain.Columns.Add(col);
                    break;

                case EhrRestrictionType.Problem:
                    col = new ODGridColumn("Disease", 160, HorizontalAlignment.Center);
                    col.SortingStrategy = GridSortingStrategy.StringCompare;
                    gridMain.Columns.Add(col);
                    break;

                default:
                    //should not happen.
                    break;
                }
            }
            gridMain.Rows.Clear();
            ODGridRow row;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                row = new ODGridRow();
                row.Cells.Add(table.Rows[i]["PatNum"].ToString());
                row.Cells.Add(table.Rows[i]["LName"].ToString() + ", " + table.Rows[i]["FName"].ToString());
                //Add 3 to j to compensate for PatNum, LName and FName.
                for (int j = 0; j < elementList.Count; j++)           //sometimes one element might pull two columns, Lab Results for instance.//<elementList.Count;j++) {
                {
                    switch (elementList[j].Restriction)
                    {
                    case EhrRestrictionType.Medication:
                    case EhrRestrictionType.Problem:
                        row.Cells.Add(table.Rows[i][j + 3].ToString());
                        break;

                    case EhrRestrictionType.Birthdate:
                        row.Cells.Add(table.Rows[i][j + 3].ToString().Replace(" 12:00:00 AM", ""));
                        break;

                    case EhrRestrictionType.LabResult:
                        row.Cells.Add(table.Rows[i][j + 3].ToString());                              //obsVal
                        break;

                    case EhrRestrictionType.Gender:
                        switch (table.Rows[i][j + 3].ToString())
                        {
                        case "0":                                        //Male
                            row.Cells.Add("Male");
                            break;

                        case "1":                                        //Female
                            row.Cells.Add("Female");
                            break;

                        case "2":                                        //Unknown
                        default:
                            row.Cells.Add("Unknown");
                            break;
                        }
                        break;
                    }
                }
                gridMain.Rows.Add(row);
            }
            gridMain.EndUpdate();
            g.Dispose();
        }