Sometimes we
just compile our posts to keep the things at one place so we or someone can get
it easily when we in need. This post belongs to the same concept :)
Requirement was
to filter the records in grid according to the selection of base enum values from
a lookup. Easy task :) but then I had to make a string field a custom lookup on
selection of first value from base enum and to make it a read only on selection
of second value of the base enum.
This is what I
did;
Filter:
modified
public boolean
modified()
{
boolean ret;
ret = super();
if(str2enum(enum_variable,this.valueStr()) == enum::firstvalue)
{
stringField.allowEdit(true);
stringField .text(' ');
}
else
{
stringField .allowEdit(False);
stringField .text(curuserid());
}
return ret;
}
StringEdit:
StringField
//
This lookup is populating users
Public void
lookup()
{
Query query =
new Query();
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange queryBuildRange;
SysTableLookup sysTableLookup;
;
//Create an instance of SysTableLookup with the form control passed in
sysTableLookup = SysTableLookup::newParameters(tablenum(UserInfo), this);
//Add the fields to be shown in the lookup form
sysTableLookup.addLookupfield(fieldnum(UserInfo, id), true);
sysTableLookup.addLookupfield(fieldnum(UserInfo, name), false);
//create the query datasource
queryBuildDataSource
= query.addDataSource(tablenum(UserInfo));
queryBuildRange = queryBuildDataSource.addRange(fieldnum(UserInfo, Id));
queryBuildRange.value(element.getusers());
//add the query to the lookup form
sysTableLookup.parmQuery(query);
//
Perform lookup
sysTableLookup.performFormLookup();
}
//
Method to get users
str 100
getusers()
{
str 100
Users;
;
While Select UsersTable where UsersTable .UserId == Curuserid()
{
Select Firstonly SysCompanyUserInfo where
SysCompanyUserInfo.EmplId == UsersTable.Emplid ;
Users+= SysCompanyUserInfo.UserId +',';
}
if(!Users)
Return '\"\"' ;
Return Users ;
}
Thanks for comments.....