Use of Switch case and add data field to grid at runtime

Use of Switch case and add data field to grid at runtime.

public void Bind_Total()
{

FormControl FC1, FC2, FC3, FC4, FC5, FC6, FC7;

delete_from SD_AllDetails_Total;

select sum(NoofSP), sum(Area), sum(ApproxYield), sum(ActualYield), sum(NoLot), from SD_AllDetails_1;

SD_AllDetails_Total1.NoofSP = SD_AllDetails_1.NoofSP;
SD_AllDetails_Total1.Area = SD_AllDetails_1.Area;
SD_AllDetails_Total1.ApproxYield = SD_AllDetails_1.ApproxYield;
SD_AllDetails_Total1.ActualYield = SD_AllDetails_1.ActualYield;
SD_AllDetails_Total1.NoLot = SD_AllDetails_1.NoLot;

SD_AllDetails_Total1.insert();

SD_AllDetails_Total_ds.refresh();
SD_AllDetails_Total_ds.reread();
SD_AllDetails_Total_ds.research();

GridTotal = GroupTotal.addControl(FormControlType::Grid, "GridTotal", StaticText);

GridTotal.dataSource(SD_AllDetails_Total_ds.id());


while select * from SD_Columns3 order by SD_Columns3.ID where SD_Columns3.YesNo == true && SD_Columns3.GroupBy == false
{
switch(SD_Columns3.ID)
{
case 21:
if(SD_Columns3.YesNo == true)
FC1 = GridTotal.addDataField(SD_AllDetails_Total_ds.id(), fieldnum(SD_AllDetails, NoofSP));
break;
case 22:
if(SD_Columns3.YesNo == true)
FC2 = GridTotal.addDataField(SD_AllDetails_Total_ds.id(), fieldnum(SD_AllDetails, Area));
break;
case 23:
if(SD_Columns3.YesNo == true)
FC3 = GridTotal.addDataField(SD_AllDetails_Total_ds.id(), fieldnum(SD_AllDetails, ApproxYield));
break;
case 24:
if(SD_Columns3.YesNo == true)
FC4 = GridTotal.addDataField(SD_AllDetails_Total_ds.id(), fieldnum(SD_AllDetails, ActualYield));
break;
case 25:
if(SD_Columns3.YesNo == true)
FC5 = GridTotal.addDataField(SD_AllDetails_Total_ds.id(), fieldnum(SD_AllDetails, NoLot));
break;

}

}
GridTotal.width(950);
GridTotal.height(50);
GridTotal.visibleRows(2);
GridTotal.controlNum(1).setFocus();
GridTotal.dataSource(SD_AllDetails_Total_ds);

SD_AllDetails_Total_ds.refresh();
SD_AllDetails_Total_ds.reread();
SD_AllDetails_Total_ds.research();

// GridTotal.update();

}