代码之家  ›  专栏  ›  技术社区  ›  vid

从自定义对象添加新记录并将其显示在visualforce页面上

  •  0
  • vid  · 技术社区  · 7 年前

    错误:未知属性“tudent\uu cStandardController”。d'

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

    提前谢谢你的帮助

        <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 回复  |  直到 7 年前
        1
  •  0
  •   Jitender Padda    7 年前

    以下是您应该使用的更新代码->

    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 必须替换为 s s (var=“s”)。

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

    您使用了两个构造函数,并从错误的构造函数中调用loadData(),这就是为什么它没有加载数据。这样,您就可以删除记录并重新加载表。

        2
  •  0
  •   DSrivastava    7 年前

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