function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Josh Anderson 30Josh 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
<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;
    }
    
}