Dynamically adding columns and values for a grid
private void GetSamples()
{
Hashtable hashList = new Hashtable();
Hashtable rptDispHashList = new Hashtable();
IList reportRsltsList = _sampleUI.GetTestReportDetails(_caseId);
string ReferralNumber = "REF0710014";
DataTable dt = BuildDataTableHeader();
int fixedColCount=dt.Columns.Count;
dt = BuildDataTableHeaderForSampleParameter(ReferralNumber, dt);---------
method used to add dynamic columns for a griddt = BuildDataTableHeaderForResultParameter(ReferralNumber, dt);
if(reportRsltsList.Count != 0)
{
foreach(IList reportList in reportRsltsList)
{
DataRow dr = dt.NewRow();
ReportResult rptRsult = (ReportResult)reportList[0];
Test test = (Test)reportList[1];
Patient patient = (Patient)reportList[2];
string billingType = reportList[3].ToString();
//dt = BuildDataTableHeaderForSampleParameter(rptRsult.AccessionNo);
dr[5] = rptRsult.ReferralNo;
dr[6] = test.TestName;
dr[7] = patient.Name;
dr[2] = rptRsult.ReportResultCodes.ReportResultCode;
dr[1] = rptRsult.SampleStatus;
dr[3] = rptRsult.IsPrimary;
dr[8] = rptRsult.Id;
dr[0] = rptRsult.AccessionNo;
dr[9] = rptRsult.ReportDesc;
dr[10] = rptRsult.ReportResultCodes.ReportResultID;
dr[11] = rptRsult.ReportDispatch.RptDispatchId;
dr[12] = rptRsult.ReportDispatch.RptDispatchCode.RptDispatchId;
dr[13] = rptRsult.SampleTypeCode;
dr[14] = test.TestId;
dr[15] = billingType;
if (rptRsult.ReportDispatch.CourierRefferenceNo != "")
dr[19] = rptRsult.ReportDispatch.CourierRefferenceNo;
dr[20] = rptRsult.ReportDispatch.rptDispatchDate;
_SampleTypesHash = (Hashtable)Session[SessionGlobals.SAMPLE_TYPES_LIST];
if (_SampleTypesHash != null)
{
if (_SampleTypesHash.ContainsKey(rptRsult.SampleTypeCode.ToString()))
dr[16] = _SampleTypesHash[rptRsult.SampleTypeCode.ToString()].ToString();
}
_TestsListHash = (Hashtable)Session[SessionGlobals.CASE_TEST_LIST];
if (_TestsListHash != null)
{
if (_TestsListHash.ContainsKey(test.TestId.ToString()))
dr[17] = _TestsListHash[test.TestId.ToString()].ToString();
}
dr[4] = reportList[4].ToString();
dr[18] = Convert.ToInt32(reportList[5].ToString());
//to get all sample parameter values
int i = fixedColCount;
Parameter[] sampleParValues = _lmsUI.GetSampleParamValues(rptRsult.AccessionNo);
foreach (Parameter parSamValues in sampleParValues)----------
Adding dynamic column values in a grid{
dr[i] = parSamValues.ParameterValue;
i++;
}
Parameter[] resultParValues = _lmsUI.GetResultParamValues(rptRsult.AccessionNo);
foreach (Parameter parResultValues in resultParValues)
{
dr[i] = parResultValues.ParameterValue;
i++;
}
//end
dt.Rows.Add(dr);
if(!hashList.Contains(rptRsult.ReferralNo))
{
IList ilis = new ArrayList();
ilis.Add(test.TestId);
ilis.Add(rptRsult.SampleStatus);
ilis.Add(rptRsult.ReportResultCodes.ReportResultCode);
IList ilisT = new ArrayList();
ilisT.Add(ilis);
hashList.Add(rptRsult.ReferralNo, ilisT);
}
else
{
IList ilis = new ArrayList();
IList previousList = (IList)hashList[rptRsult.ReferralNo];
ilis.Add(test.TestId);
ilis.Add(rptRsult.SampleStatus);
ilis.Add(rptRsult.ReportResultCodes.ReportResultCode);
previousList.Add(ilis);
}
if(rptRsult.AccessionNo != "")
{
rptDispHashList.Add(rptRsult.AccessionNo, rptRsult.ReportDispatch);
}
}
uxSaveResultBtn.Enabled = true;
uxReportDelBtn.Enabled = false;
}
else
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
uxSaveResultBtn.Enabled = false;
uxReportDelBtn.Enabled = false;
}
uxSampleGrid.DataSource = dt;
uxSampleGrid.DataBind();
ViewState["HashList"] = hashList;
ViewState["ReportDispatchHashList"] = rptDispHashList;
}
method for adding dynamic columnsprivate DataTable BuildDataTableHeaderForSampleParameter(string RefNo, DataTable dtable)
{
DataTable dt = dtable;
Parameter[] sampleParNames = _lmsUI.GetSampleParamNames(RefNo);
foreach (Parameter p in sampleParNames)
{
string parName=p.ParameterName;
DataColumn datCol = new DataColumn(parName, System.Type.GetType("System.String"));
dt.Columns.Add(datCol);
}
return dt;
}