2017-10-18 18 views
0

今すぐVisualforceページでエラーが発生します。言う:新しいレコードを追加してカスタムオブジェクトからVisualforceページに表示

Error:Unknown property 'tudent__cStandardController.d'

私はvfページにdelete commandLinkボタンを追加すると起こります。それを追加する前に、エラーを出すのではなく、ページにレコードを表示しません。事前に助けを

おかげ

の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> 

コントローラー:

ここ
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(); 

    } 

} 

答えて

0

はあなたが使用する必要があります更新されたコードである - >

1)更新して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> 

あなたは頂点の内側にあなたのcommandLinkを置くために必要な:あなたのテーブル変数がsであるため、列を順番にそれがpageBlockTableで正しく表示するようにしても、もちろんdsに置き換えなければならなかったため( var = "s")。

2)がこれにあなたのコントローラを更新 -

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(); 

    } 

} 

あなたは2つのコンストラクタを使用していたし、間違ったものからloaddataの()を呼び出すと、それはデータをロードしていなかった理由ですました。これで、レコードを削除してテーブルをリロードすることができます。

+0

エラー:コンパイルエラー:メソッドオブジェクト(ApexPages.StandardController)がVisualforceページによって参照されています。使用法を削除してもう一度やり直してください。この行を指しています: "Public String SelectedStudentId {get; set;}"。どんなアイデアですか?グーグルで試してみましたが、実際に修正することはできませんでした。 – vid

+0

あなたは更新されたコードをコントローラに投稿できますか?コードを見ずに本当に助けてはいけません。 –

+0

コードと投稿を更新しました。新しいエラーが出ました。上記の投稿を参照してください。 – vid

0

{!d.Id}を{!s.Id}に置き換えます。 pageblocktableのレコードをトラバースするために使用される変数は、dではありません。