Hi Stanislav,
Below is the java code, client side code and db structure.
public class LoadGridServlet extends ConnectorServlet
{
	private static final long serialVersionUID = 1L;
	private String jsonString;
	private String gridType;
	// Dynamic Load record count
	private int dynamicLoadRowCount=0;
	public synchronized int getDynamicLoadRowCount()
	{
		return dynamicLoadRowCount;
	}
	public synchronized void setDynamicLoadRowCount(int dynamicLoadRowCount)
	{
		this.dynamicLoadRowCount = dynamicLoadRowCount;
	}
	public synchronized String getGridType()
	{
		return gridType;
	}
	public synchronized void setGridType(String gridType)
	{
		this.gridType = gridType;
	}
	public synchronized String getJsonString()
	{
		return jsonString;
	}
	public synchronized void setJsonString(String jsonString)
	{
		this.jsonString = jsonString;
	}
	protected void configure()
	{
		IDAOFactory daoFactory = null;
		IConnectionManager conMgnr = null;
		try
		{
			AbstractGridImpl abstractGridobj = getImplObj();
			String appName = CommonServiceLocator.getInstance().getAppName();
			daoFactory = DAOConfigFactory.getInstance().getDAOFactory(appName);
			conMgnr = daoFactory.getJDBCDAO().getConnectionManager();
			GridConnector connector = new GridConnector(conMgnr.getConnection(), DBType.Oracle);
			connector.event.attach(abstractGridobj);
			
			BaseConnector options = new OptionsConnector(conMgnr.getConnection(), DBType.Oracle);
			options.enable_log("c:\\logs\\option.txt", true);
			options.render_sql("select DISTINCT csp.SHORT_TITLE as value, csp.SHORT_TITLE as label from CATISSUE_SPECIMEN_PROTOCOL csp","csp.IDENTIFIER","csp.SHORT_TITLE(value),csp.SHORT_TITLE(label)");
			connector.set_options("CS.SHORT_TITLE(TITLE)", options);
			connector.render_sql( "SELECT ED.IDENTIFIER AS IDENTIFIER, CS.SHORT_TITLE AS TITLE, FORM_ID, to_char(STUDYSTARTDATE,'MM/DD/YYYY') as STUDYSTARTDATE,to_char(STUDYENDDATE,'MM/DD/YYYY') as STUDYENDDATE,FILETYPE,CU.LAST_NAME||', '||CU.FIRST_NAME AS USERNAME,to_char(JOBSTARTTIME,'MM/DD/YYYY HH24:MI') as JOBSTARTTIME ,STATUS from EXPORT_DATA_DETAILS ED,CATISSUE_SPECIMEN_PROTOCOL CS,CATISSUE_USER CU WHERE CS.IDENTIFIER=ED.CS_ID AND CU.IDENTIFIER=ED.USER_IDENTIFIER  Order By ED.IDENTIFIER DESC", "IDENTIFIER", "STATUS,CS.SHORT_TITLE (TITLE),FORM_ID,FILETYPE,JOBSTARTTIME,STUDYSTARTDATE,STUDYENDDATE,USERNAME");			
			
			if (dynamicLoadRowCount != 0)
			{
				connector.dynamic_loading(dynamicLoadRowCount);
			}
		}
		catch (Exception ex)
		{
			Logger.getLogger(LoadGridServlet.class).error(ex.getMessage(), ex);
		}
		finally
		{
			try
			{
				conMgnr.closeConnection();
			}
			catch (DAOException e)
			{
				Logger.getLogger(LoadGridServlet.class).error(e.getMessage(), e);
			}
		}
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,
			IOException
	{
		setJsonString(req.getParameter("paramJson"));
		setGridType(req.getParameter("gridType"));
		if (req.getParameter("dynamicLoadRowCount") != null)
		{
			setDynamicLoadRowCount(Integer.parseInt(req.getParameter("dynamicLoadRowCount")));
		}
		
		super.doGet(req, res);
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,
			IOException
	{
		setJsonString(req.getParameter("paramJson"));
		setGridType(req.getParameter("gridType"));
		super.doGet(req, res);
	}
	/**
	 *
	 * @return
	 * @throws IOException
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 */
	protected AbstractGridImpl getImplObj() throws IOException, InstantiationException,
			IllegalAccessException, ClassNotFoundException
	{
		InputStream inputStream = LoadGridServlet.class.getClassLoader().getResourceAsStream(
				Constants.GRID_SETUP_PROP_FILE);
		Properties props = new Properties();
		props.load(inputStream);
		String className = props.getProperty(gridType);
		AbstractGridImpl abstractGridobj = (AbstractGridImpl) Class.forName(className)
				.newInstance();
		return abstractGridobj;
	}
}
javascript functions
function getExportDataGrid(userId,isAdmin){
	mygrid = new dhtmlXGridObject('downloadDataDetails');
	mygrid.setImagePath("dhtmlx_suite/imgs/");
	mygrid.setHeader("Actions,Clinical Study,Study Form,File Type,Exported On,Encounter Start Date,Encounter End Date,Exported By");
	mygrid.setInitWidths("70,100,*,70,130,100,100,150");
	mygrid.setEditable(false);
	mygrid.setColAlign("left,left,left,center,center,center,center,left");
	mygrid.setSkin("dhx_skyblue");
	mygrid.enablePaging(true, 15, 5, "exportData_PagingArea", true, "infoArea");
	mygrid.setPagingSkin("bricks");
	mygrid.attachHeader("#connector_text_filter,#connector_select_filter,,#connector_select_filter,,,,");
	mygrid.init();
	var paramsArr = {
		userId : userId,
		isAdmin : isAdmin
	};
	var gridQString = "LoadGridServlet?gridType=exportdata&dynamicLoadRowCount=15¶mJson="
			+ createJsonOnjectForGrid(paramsArr);
	mygrid.loadXML(gridQString + "&connector=true",hideDownloadImage());
//	mygrid.load(gridQString,function(){getSavedFiltersResponse();});
	mygrid.attachEvent("onPageChanged", function(ind,fInd,lInd){firstInd= fInd;lastInd= lInd;});//explain usage of the indices
}
DB Schema
CREATE TABLE “EXPORT_DATA_DETAILS”
(	“IDENTIFIER” NUMBER,
“USER_IDENTIFIER” NUMBER,
“CS_ID” NUMBER,
“STUDYSTARTDATE” DATE,
“STUDYENDDATE” DATE,
“FILENAME” VARCHAR2(640 BYTE),
“JOBSTARTTIME” TIMESTAMP (6),
“JOBENDTIME” TIMESTAMP (6),
“FILETYPE” VARCHAR2(10 BYTE),
“STATUS” VARCHAR2(30 BYTE),
“ERRORMESSAGE” VARCHAR2(1024 BYTE),
“FILECONTENT” BLOB,
“TMP_ID” NUMBER(19,0),
“FORM_ID” CLOB,
PRIMARY KEY (“IDENTIFIER”)
) ;
CREATE TABLE “CATISSUE_SPECIMEN_PROTOCOL”
(	“IDENTIFIER” NUMBER(19,0) NOT NULL ENABLE,
“PRINCIPAL_INVESTIGATOR_ID” NUMBER(19,0),
“TITLE” VARCHAR2(255 BYTE) NOT NULL ENABLE,
“SHORT_TITLE” VARCHAR2(255 BYTE),
“IRB_IDENTIFIER” VARCHAR2(255 BYTE),
“START_DATE” DATE,
“END_DATE” DATE,
“ENROLLMENT” NUMBER(*,0),
“DESCRIPTION_URL” VARCHAR2(255 BYTE),
“ACTIVITY_STATUS” VARCHAR2(50 BYTE),
“PARTCIPNT_MATCH_WITHIN_CSCP” NUMBER(1,0),
“IS_EMPI_ENABLE” NUMBER(1,0),
“PPI_FORMAT” VARCHAR2(255 BYTE),
“IS_TO_GENERATE_PARTICIPANTCODE” NUMBER(1,0) DEFAULT 0,
“IS_TO_STORE_PHI” NUMBER(1,0) DEFAULT 0,
PRIMARY KEY (“IDENTIFIER”)
)
CREATE TABLE “CATISSUE_USER”
(	“IDENTIFIER” NUMBER(19,0) NOT NULL ENABLE,
“EMAIL_ADDRESS” VARCHAR2(255 BYTE),
“FIRST_NAME” VARCHAR2(255 BYTE),
“LAST_NAME” VARCHAR2(255 BYTE),
“LOGIN_NAME” VARCHAR2(255 BYTE) NOT NULL ENABLE,
“START_DATE” DATE,
“ACTIVITY_STATUS” VARCHAR2(50 BYTE),
“DEPARTMENT_ID” NUMBER(19,0),
“CANCER_RESEARCH_GROUP_ID” NUMBER(19,0),
“INSTITUTION_ID” NUMBER(19,0),
“ADDRESS_ID” NUMBER(19,0),
“CSM_USER_ID” NUMBER(19,0),
“STATUS_COMMENT” VARCHAR2(500 BYTE),
“FIRST_TIME_LOGIN” NUMBER(1,0) DEFAULT 1,
“IS_ADMIN” NUMBER(1,0) DEFAULT 0,
“WUSTLKEY” VARCHAR2(100 BYTE),
PRIMARY KEY (“IDENTIFIER”)
)
Thank you.