You need to sign in to do that
Don't have an account?

i want fetch one record from object basd on input label.....but using this code i'm fecthnig all d records of that parcticular object ...how can i improve search functionality to fetch record from singal object based on input string given at label field
public class objectController1
{
public string searchTxt {get; set;}
String queryString;
public void searchrecords() {
system.debug('selectedObject ---selectedField--------'+selectedObject+'---'+selectedField );
queryString = 'SELECT Id, name';
if (selectedObject!= null && selectedObject!= '')
{
queryString += ' from '+ selectedObject+'';
}
if ( searchTxt != null && searchTxt!= '')
{
if (selectedField != null && selectedField != '') {
queryString += ' where ' + selectedField +' = '+searchTxt;
system.debug('queryString -----'+queryString );
}
}
system.debug('queryString -----------'+queryString );
lstQuery= database.query(queryString);
}
public Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
public String selectedObject {get; set;}
public list<sobject >lstQuery{get; set;}
public String selectedField {get; set;}
Public objectController1()
{
selectedObject = 'account';
}
public List<SelectOption> getObjectNames()
{
List<SelectOption> objNames = new List<SelectOption>();
List<String> entities = new List<String>(schemaMap.keySet());
entities.sort();
for(String name : entities)
{
objNames.add(new SelectOption(name,name));
}
return objNames;
}
public List<SelectOption> getObjectFields()
{
Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
List<SelectOption> fieldNames = new List<SelectOption>();
for (String fieldName: fieldMap.keySet())
{
fieldNames.add(new SelectOption(fieldName,fieldName));
}
return fieldNames;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------
<apex:page controller="objectController1" setup="false" showHeader="false" sidebar="false">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection columns="4">
<apex:pageBlockSectionItem >
<apex:outputlabel value="Object Names :"/>
<apex:actionRegion >
<apex:selectList value="{!selectedObject}" size="1">
<apex:selectOptions value="{!ObjectNames}"/>
<apex:actionSupport event="onchange" rerender="myFields"/>
</apex:selectList>
</apex:actionRegion>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputlabel value="Field Names :"/>
<apex:outputPanel id="myFields">
<apex:actionRegion >
<apex:selectList value="{!selectedField}" size="1">
<apex:selectOptions value="{!ObjectFields}"/>
</apex:selectList>
</apex:actionRegion>
</apex:outputPanel>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<input id="a" placeholder="label" style="margin-left:10px;" />
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:commandButton onclick="callSearch();" value="Search" reRender="x" style="margin-left:10px;" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageblockTable value="{!lstQuery}" var="eachRecord" id="list">
<apex:column value="{!eachRecord.id}"/>
<apex:column value="{!eachRecord['Name']}"/>
</apex:pageblockTable>
</apex:pageBlock>
<apex:actionFunction name="callSearch" action="{!searchRecords}" reRender="list">
<apex:param name="a" value="" assignTo="{!searchTxt}"/>
</apex:actionFunction>
</apex:form>
</apex:page>
{
public string searchTxt {get; set;}
String queryString;
public void searchrecords() {
system.debug('selectedObject ---selectedField--------'+selectedObject+'---'+selectedField );
queryString = 'SELECT Id, name';
if (selectedObject!= null && selectedObject!= '')
{
queryString += ' from '+ selectedObject+'';
}
if ( searchTxt != null && searchTxt!= '')
{
if (selectedField != null && selectedField != '') {
queryString += ' where ' + selectedField +' = '+searchTxt;
system.debug('queryString -----'+queryString );
}
}
system.debug('queryString -----------'+queryString );
lstQuery= database.query(queryString);
}
public Map <String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
public String selectedObject {get; set;}
public list<sobject >lstQuery{get; set;}
public String selectedField {get; set;}
Public objectController1()
{
selectedObject = 'account';
}
public List<SelectOption> getObjectNames()
{
List<SelectOption> objNames = new List<SelectOption>();
List<String> entities = new List<String>(schemaMap.keySet());
entities.sort();
for(String name : entities)
{
objNames.add(new SelectOption(name,name));
}
return objNames;
}
public List<SelectOption> getObjectFields()
{
Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe();
Schema.SObjectType ObjectSchema = schemaMap.get(selectedObject);
Map<String, Schema.SObjectField> fieldMap = ObjectSchema.getDescribe().fields.getMap();
List<SelectOption> fieldNames = new List<SelectOption>();
for (String fieldName: fieldMap.keySet())
{
fieldNames.add(new SelectOption(fieldName,fieldName));
}
return fieldNames;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------
<apex:page controller="objectController1" setup="false" showHeader="false" sidebar="false">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection columns="4">
<apex:pageBlockSectionItem >
<apex:outputlabel value="Object Names :"/>
<apex:actionRegion >
<apex:selectList value="{!selectedObject}" size="1">
<apex:selectOptions value="{!ObjectNames}"/>
<apex:actionSupport event="onchange" rerender="myFields"/>
</apex:selectList>
</apex:actionRegion>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputlabel value="Field Names :"/>
<apex:outputPanel id="myFields">
<apex:actionRegion >
<apex:selectList value="{!selectedField}" size="1">
<apex:selectOptions value="{!ObjectFields}"/>
</apex:selectList>
</apex:actionRegion>
</apex:outputPanel>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<input id="a" placeholder="label" style="margin-left:10px;" />
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:commandButton onclick="callSearch();" value="Search" reRender="x" style="margin-left:10px;" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageblockTable value="{!lstQuery}" var="eachRecord" id="list">
<apex:column value="{!eachRecord.id}"/>
<apex:column value="{!eachRecord['Name']}"/>
</apex:pageblockTable>
</apex:pageBlock>
<apex:actionFunction name="callSearch" action="{!searchRecords}" reRender="list">
<apex:param name="a" value="" assignTo="{!searchTxt}"/>
</apex:actionFunction>
</apex:form>
</apex:page>
Try Following Code:
Class:
Page:
Hope this helps you. Mark as best answer if it helps.
All Answers
In your code try replacing with following:
Next time post your code using code snippet so it will be easier for us.
Try Following Code:
Class:
Page:
Hope this helps you. Mark as best answer if it helps.