添加新记录并在自定义对象的visualforce页面上显示它们

时间:2017-10-18 17:36:22

标签: salesforce apex-code visualforce apex custom-object

我现在在visualforce页面中收到错误。说:

  

错误:未知属性'tudent__cStandardController.d'

当我将删除commandLink按钮添加到vf页面时会发生这种情况。在我添加之前,它不会发出错误,但它不会在页面上显示记录。

提前感谢您的帮助

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

   }

}

2 个答案:

答案 0 :(得分:0)

以下是您应该使用的更新代码 - &gt;

1)将PageBlockTable更新为此 -

<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放在顶点:列中才能在pageBlockTable中正确显示,当然d必须替换为{{} 1}}因为你的表变量是s(var =“s”)。

2)将控制器更新为此 -

s

您使用了两个构造函数并且从错误的构造函数调用loadData(),这就是它不加载数据的原因。这样您就可以删除记录并重新加载表格。

答案 1 :(得分:0)

用{!s.Id}替换{!d.Id} 用于遍历pageblocktable中记录的变量不是d。