Vaadin Grids created dynamically

I created a grid dynamically using labels.
I want the scroll bars to work but the header must stay fixed at the top
Please see attached to see ho wmy grid looks like
17665580.png

Are you using the Grid component of the framework (btw. which version?) or did you implement your own Grid component?

Hi

I implimented my own grid component

setText(new VaadinLabel(getObjID()), String.valueOf(" "),"25px","",true, record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getClaimDate()),"65px","",true, record4);
	
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getReference()), "60px","v-LeftAlign", true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getBatch()),"36px","v-RightAlign", true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getTransactionValue())),"100px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getProcessingPeriod()),"100px","v-LeftAlign",true,record4);
	
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getCapturedBy()),"100px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getcapturedDate()),"100px","v-LeftAlign",true,record4);	
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getPostedBy()),"80px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getPostedDate()),"70px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getPaidBy()),"70px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getPaymentDueDate()),"130px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.valueOf(tempDS.getPaymentDate()),"85px","v-LeftAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getContractWorks())),"100px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getApprovedVariation())),"125px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getUnapprovedVariation())),"135px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getAuthorisedValue())),"120px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getRetentionValue())),"100px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getNetClaim())),"70px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getGstValue())),"70px","v-RightAlign",true,record4);
	setText(new VaadinLabel(getObjID()), String.format("%,.2f",Double.valueOf(tempDS.getGstNet())),"100px","v-RightAlign",true,record4);
	


public void setText(VaadinLabel vcb, LocalDate value, String width,VaadinRecord r) {

	
	vcb.readonly = true;
	vcb.visible = true;
	vcb.enabled = true;
	vcb.width = width;
	vcb.value = String.valueOf(value);
	


	// Add column to the row
	r.add(vcb);
}

	private String getObjID() {
	return String.valueOf((char) (96 + objID++ % 21));
}