You need to sign in to do that
Don't have an account?
Josh Anderson 30
Unknown property 'String.Id'
I am trying to update a VF page and add a new field but am getting an error "Unknown property 'String.Id'". The field that I am trying to add is Description_c, a depending picklist to Task_Type__c. All I was trying to do was add a new column and I added this to the query of the controller. Is anyone seeing anything that would cause this error?
VisualForce
Controller:
VisualForce
<apex:page controller="TimeTrackerTimesheetViewController" sidebar="false"> <script> </script> <apex:form id="formie"> <apex:pageblock id="blockie" title="Timesheet"> <apex:outputPanel id="main_panel"> <div style="margin:20px 0px"> <apex:actionRegion > <apex:selectList value="{!dateSelected}" multiselect="false" size="1" > <apex:actionSupport event="onchange" action="{!changeDate}" rerender="main_panel"/> <apex:selectOptions value="{!availableDates}"/> </apex:selectList> <span style="font-size:14px; margin:0px 10px" >Total: {!totalHours} Hours</span> </apex:actionRegion> </div> <apex:variable value="{!0}" var="xNum"/> <apex:pageBlockSection columns="1" title="Time Entries" id="x_blocks" collapsible="False"> <apex:actionRegion > <apex:pageBlockTable value="{!existingTTList}" var="xt"> <apex:column headerValue="Action" style="width:30px"> <apex:variable var="xNum" value="{!xNum + 1}"/> <apex:commandLink value="Delete" style="color:red" action="{!removeXFromList}" rerender="main_panel" immediate="true"> <apex:param value="{!xt.Id}" name="ttToDelete" assignTo="{!ttToDelete}"/> </apex:commandLink> <apex:commandLink value="Edit" style="color:blue;margin-left:10px;" action="{!editXFromList}" rerender="main_panel" immediate="true"> <apex:param value="{!xt.Id}" name="ttToEdit" assignTo="{!ttToEdit}"/> </apex:commandLink> </apex:column> <apex:column headerValue="Date" style="width:50px"> <apex:outputfield value="{!xt.Date__c}" /> </apex:column> <apex:column headerValue="Account Name" style="width:100px"> <apex:outputfield value="{!xt.Account__c}" /> </apex:column> <apex:column headerValue="Opportunity Name" style="width:100px"> <apex:outputfield value="{!xt.Opportunity__c}" /> </apex:column> <apex:column headerValue="Task Type" style="width:100px"> <apex:outputfield value="{!xt.Task_Type__c}" /> </apex:column> <apex:column headerValue="Description" style="width:100px"> <apex:inputfield value="{!xt.Description__c}" required="true"/> </apex:column> <apex:column headerValue="Product Type" style="width:100px"> <apex:outputfield value="{!xt.Product_Type__c}" /> </apex:column> <apex:column headerValue="Notes" style="width:300px"> <apex:outputfield value="{!xt.Notes__c}" style="width:100%"/> </apex:column> <apex:column headerValue="Hours" style="width:100px"> <apex:outputfield value="{!xt.Time_Hours__c}" /> </apex:column> <apex:inlineEditSupport showOnEdit="" event="ondblclick" changedStyleClass="myBoldClass"/> </apex:pageBlockTable> </apex:actionRegion> </apex:pageBlockSection> <apex:variable value="{!0}" var="rowNum"/> <apex:pageBlockSection columns="1" title="Add Entries" id="p_blocks" collapsible="False"> <apex:pageBlockTable value="{!newTTList}" var="tt"> <apex:column headerValue="Action" style="width:50px"> <apex:commandLink value="Remove" style="color:red" action="{!removeRowFromList}" rendered="{!rowNum > 0}" rerender="main_panel" immediate="true" > <apex:param value="{!rowNum}" name="rowToRemove" assignTo="{!rowToRemove}"/> </apex:commandLink> <apex:variable var="rowNum" value="{!rowNum + 1}"/> </apex:column> <apex:column headerValue="Date" style="width:50px"> <apex:inputfield value="{!tt.Date__c}" required="true"/> </apex:column> <apex:column headerValue="Account Name" style="width:100px"> <apex:inputField value="{!tt.Account__c}" required="true"/> </apex:column> <apex:column headerValue="Opportunity Name" style="width:100px"> <apex:inputField value="{!tt.Opportunity__c}" required="false"/> </apex:column> <apex:column headerValue="Task Type" style="width:100px"> <apex:inputfield value="{!tt.Task_Type__c}" required="true"/> </apex:column> <apex:column headerValue="Description" style="width:100px"> <apex:inputfield value="{!tt.Description__c}" required="true"/> </apex:column> <apex:column headerValue="Product Type" style="width:100px"> <apex:inputField value="{!tt.Product_Type__c}" required="true"/> </apex:column> <apex:column headerValue="Notes" style="width:300px"> <apex:inputfield value="{!tt.Notes__c}" style="width: 95%"/> </apex:column> <apex:column headerValue="Hours" style="width:100px"> <apex:inputfield value="{!tt.Time_Hours__c}" required="true"/> </apex:column> </apex:pageBlockTable> </apex:pageBlockSection> <apex:commandButton value="Add More" action="{!addNewRowToList}" rerender="main_panel" Status="status" immediate="true" /> </apex:outputPanel> <apex:pageblockButtons location="bottom"> <apex:commandButton id="savenew" value="Save" action="{!SaveTimeTrackers}"/> </apex:pageblockButtons> </apex:pageblock> </apex:form> </apex:page>
Controller:
public class TimeTrackerTimesheetViewController { public String xt { get; set; } public List<Time_Tracker__c> newTTList {get;set;} public Integer rowToRemove {get;set;} public Id ttToDelete {get;set;} public Id ttToEdit {get;set;} public Date dateSelected {get;set;} public Decimal totalHours {get;set;} public List<Time_Tracker__c> existingTTList {get;set;} public List<SelectOption> availableDates {get;set;} public ID currentUser; public TimeTrackerTimesheetViewController(){ currentUser = UserInfo.getUserId(); dateSelected = date.today(); totalHours = 0.0; rowToRemove = 0; availableDates = new List<SelectOption>(); Date loopDate = date.today(); availableDates.add(new SelectOption(loopDate.format(), 'TODAY ' + loopDate.format())); for(Integer i = 0; i < 7; i++) { loopDate = loopDate.addDays(-1); Datetime dt = loopDate.addDays(1); //if(dt.format('EEEE') != 'Sunday' && dt.format('EEEE') != 'Saturday'){ availableDates.add(new SelectOption(loopDate.format(), dt.format('EEEE') + ' ' + loopDate.format())); //} } newTTList = new List<Time_Tracker__c>(); addNewRowToList(); queryExisting(); } public void addNewRowToList(){ Time_Tracker__c newTT = new Time_Tracker__c(Date__c = dateSelected, User__c = currentUser); newTTList.add(newTT); } public void removeRowFromList(){ newTTList.remove(rowToRemove); } public void changeDate() { queryExisting(); for(Time_Tracker__c t : newTTList) { t.Date__c = dateSelected; } } public void removeXFromList(){ Database.delete(ttToDelete); queryExisting(); } public void editXFromList(){ Time_Tracker__c eTT = [SELECT User__c, Date__c, Account__c, Opportunity__c, Task_Type__c, Description__c, Product_Type__c, Time_Hours__c, Notes__c FROM Time_Tracker__c WHERE Id = :ttToEdit][0]; //newTTList.clear(); Time_Tracker__c newTT = new Time_Tracker__c(User__c = eTT.User__c, Date__c = eTT.Date__c, Account__c = eTT.Account__c, Opportunity__c = eTT.Opportunity__c, Task_Type__c = eTT.Task_Type__c, Description__c = eTT.Description__c, Product_Type__c = eTT.Product_Type__c, Time_Hours__c = eTT.Time_Hours__c, Notes__c = eTT.Notes__c); newTTList.add(0, newTT); Database.delete(ttToEdit); queryExisting(); } public void queryExisting() { existingTTList = [SELECT Id, Date__c, Account__c, Opportunity__c, Task_Type__c, Description__c, Product_Type__c, Time_Hours__c, Notes__c FROM Time_Tracker__c WHERE Date__c = :dateSelected AND User__c = :currentUser]; totalHours = 0.0; for(Time_Tracker__c e : existingTTList) { totalHours += e.Time_Hours__c; } } public PageReference SaveTimeTrackers(){ insert newTTList; newTTList.clear(); addNewRowToList(); queryExisting(); return null; } }