2017-10-18 33 views
0

Je reçois une erreur dans la page Visualforce maintenant. Dire:Ajout de nouveaux enregistrements et affichage de ceux-ci sur la page Visualforce à partir de l'objet personnalisé

Error:Unknown property 'tudent__cStandardController.d'

Cela se produit lorsque j'ajoute le bouton delete commandLink à la page vf. Avant de l'ajouter, il ne génère pas d'erreur mais n'affiche pas les enregistrements sur la page.

Merci pour l'aide à l'avance

code Visualforce:

<apex:page standardController="tudent__c" extensions="vidsav"> 
    <apex:form > 
     <apex:outputPanel id="check"> 
     <apex:pageBlock title="Dodaj Študenta"> 
      <apex:pageBlockSection columns="1"> 
      <apex:inputField value="{! tudent__c.Name }"/> 
      <apex:inputField value="{! tudent__c.priimek__c }"/> 
      <apex:inputField value="{! tudent__c.Datum_rojstva__c }"/> 
      <apex:inputField value="{! tudent__c.letnik__c }"/> 
      <apex:inputField value="{! tudent__c.Naslov__c }"/> 
      <apex:inputField value="{! tudent__c.naziv_fakultete__c }"/> 
      <apex:inputField value="{! tudent__c.tudijski_program__c }"/> 
      <apex:inputField value="{! tudent__c.tip_tudija__c }"> 
      <apex:actionSupport event="onchange" rerender="check" /> 
      </apex:inputField> 
      <apex:inputField value="{! tudent__c.Samopla_nik__c }" rendered="{!IF(tudent__c.tip_tudija__c == 'izredni', true, false)}" /> 
      </apex:pageBlockSection> 
      <apex:pageBlockButtons > 
       <apex:commandButton action="{!save}" value="Save" /> 
       <apex:commandButton value="Cancel" action="{!cancel}"/> 
      </apex:pageBlockButtons> 
     </apex:pageBlock> 
     </apex:outputPanel>  
    <apex:pageBlock title="Študenti"> 
     <apex:pageBlockTable value="{!studentsR}" var="s" > 
     <apex:commandLink action="{!deleteStudent}" onclick="if(!confirm('Are you sure?')) return false;">`enter code here`Del 
    <apex:param value="{!d.Id}" name="idToDel" assignTo="{!SelectedStudentId}"/> 
</apex:commandLink> 
     <apex:column value="{!s.Name}"/> 
     <apex:column value="{!s.priimek__c}"/> 
     <apex:column value="{!s.Datum_rojstva__c}"/> 
     <apex:column value="{!s.letnik__c}"/> 
     <apex:column value="{!s.Naslov__c}"/> 
     <apex:column value="{!s.naziv_fakultete__c}"/> 
     <apex:column value="{!s.tudijski_program__c}"/> 
     <apex:column value="{!s.tip_tudija__c}"/> 
     <apex:column value="{!s.Samopla_nik__c}"/> 
     </apex:pageBlockTable> 
    </apex:pageBlock> 
    </apex:form> 
</apex:page> 

Controller:

public class vidsav { 

public vidsav(ApexPages.StandardController controller) { 

} 

public List<tudent__c> studentsR {get;set;} 
public String SelectedStudentId {get;set;} 

public vidsav() { 
    loadData(); 

}   

public void loadData() { 

    studentsR = [Select id,Name,priimek__c,Datum_rojstva__c,letnik__c,Naslov__c,naziv_fakultete__c,tudijski_program__c,tip_tudija__c,Samopla_nik__c, CreatedDate from tudent__c Order By CreatedDate desc]; 

} 

public void deleteStudent(){ 

    studentsR = [Select id,Name,priimek__c,Datum_rojstva__c,letnik__c,Naslov__c,naziv_fakultete__c,tudijski_program__c,tip_tudija__c,Samopla_nik__c, CreatedDate from tudent__c where id = :SelectedStudentId]; 

    if(studentsR.size() > 0 || studentsR[0].Id != ''){ 

    delete studentsR; 

    } 

loadData(); 

    } 

} 

Répondre

0

Voici le code mis à jour, vous devez utiliser ->

1) Mettez à jour votre PageBlockTable to this -

<apex:pageBlockTable value="{!studentsR}" var="s" > 
    <apex:column value="{!s.Name}"/> 
    <apex:column value="{!s.priimek__c}"/> 
    <apex:column value="{!s.Datum_rojstva__c}"/> 
    <apex:column value="{!s.letnik__c}"/> 
    <apex:column value="{!s.Naslov__c}"/> 
    <apex:column value="{!s.naziv_fakultete__c}"/> 
    <apex:column value="{!s.tudijski_program__c}"/> 
    <apex:column value="{!s.tip_tudija__c}"/> 
    <apex:column value="{!s.Samopla_nik__c}"/> 
    <apex:column> 
     <apex:commandLink action="{!deleteStudent}" onclick="if(!confirm('Are you sure?')) return false;" value="Del"> 
      <apex:param value="{!s.Id}" name="idToDel" assignTo="{!SelectedStudentId}"/> 
     </apex:commandLink> 
    </apex:column> 

vous avez besoin de mettre votre commandLink l'intérieur d'un sommet: colonne pour que pour afficher correctement dans le pageBlockTable et aussi bien sûr le d a dû être remplacé par un s depuis votre variable de table est s (var = "s").

2) Mettez à jour votre contrôleur à cette question -

public class vidsav { 

public vidsav(ApexPages.StandardController controller) { 
    loadData(); 
} 

public List<Account> studentsR {get;set;} 
public String SelectedStudentId {get;set;}  

public void loadData() { 

    studentsR = [Select id,Name,priimek__c,Datum_rojstva__c,letnik__c,Naslov__c,naziv_fakultete__c,tudijski_program__c,tip_tudija__c,Samopla_nik__c, CreatedDate from tudent__c Order By CreatedDate desc]; 

} 

public void deleteStudent(){ 

    studentsR = [Select id,Name,priimek__c,Datum_rojstva__c,letnik__c,Naslov__c,naziv_fakultete__c,tudijski_program__c,tip_tudija__c,Samopla_nik__c, CreatedDate from tudent__c where id = :SelectedStudentId]; 

    if(studentsR.size() > 0 || studentsR[0].Id != ''){ 

     delete studentsR; 

    } 
    loadData(); 

    } 

} 

que vous utilisiez deux constructeurs et appeliez loadData() du mauvais et c'est la raison pour laquelle il n'a pas été le chargement des données. Avec cela, vous serez en mesure de supprimer des enregistrements et recharger votre tableau.

+0

Je reçois une erreur dans la classe apex: "Erreur: Erreur de compilation: L'objet méthode (ApexPages.StandardController) est référencé par Visualforce Page.Retirez l'utilisation et réessayez." et il pointe sur cette ligne: "public String SelectedStudentId {get; set;}". Un idead? essayé de googler et pas vraiment réussi à le réparer. – vid

+0

pouvez-vous poster votre code mis à jour avec le contrôleur? Je ne peux pas vraiment aider sans regarder le code. –

+0

Mis à jour le code et le message. Vous avez une nouvelle erreur, voir ci-dessus en post. – vid

0

Remplacez {! D.Id} par {! S.Id} La variable utilisée pour parcourir les enregistrements dans la pageblocktable est s non d.