2014-11-20 3 views
0

내 응용 프로그램에 다른 테이블이있는 테이블이 있습니다. 대화 상자별로 새 행을 삽입하고 싶습니다. 내 생각은 양식을 포함하는 대화 상자 조각을 만드는 것입니다. 문제는 폼 나는 이런 식으로 뭔가하고 싶은 항목을 내가 (표에서 내가 할 수있는)Dialog를 사용하여 테이블에 새 행을 추가하십시오.

을 하나의 커플 레이블 입력의 템플릿을 정의 할 수 있습니다 요소가없는 것입니다 :

<form:SimpleForm 
    <items> 
     <FormItem> 
      <elements> 
       <Label text="{label}" /> 
       <Input text="{value}" /> 
      </elements> 
     </FormListItem> 
    </items> 
</form:SimpleForm> 

무엇 테이블에 새로운 행을 추가하는 올바른 방법은 무엇입니까 ??

답변

0

(즉, 당신의 '행'.) :

onInit: function() { 
     //set model 
     var oModel=new sap.ui.model.json.JSONModel(); 
     oModel.loadData("model/modelTabCeScd.json", "", false); 
     this.getView().setModel(oModel); 
     this.getView().bindElement("/elements/"); 
     //add editable info in case of new row 
     var table =this.byId("idDetailsTable"); 
     var aCols= table.getColumns(); 
     for(var i = 0; i<aCols.length; i++){ 
      var bEnabled=oModel.getProperty("/elements/idDetailsTable/cols/"+i+"/enabled/"); 
      aCols[i].getHeader().enabled=bEnabled; 
     } 
    } 

:

를이 내 init 함수입니다 여기에 내가 새로운 대화

onPressAddNewRow: function (oEvent) { 
     if (!this.rowTableDialog) { 
      this.rowTableDialog = sap.ui.xmlfragment(
       "ui5bp.view.fragment.RowTableDialog", 
       this 
      ); 
      this.getView().addDependent(this.rowTableDialog); 
     } 
     var form =this.rowTableDialog.getContent()[0]; 
     var table =this.byId("idDetailsTable"); 
     var aCols= table.getColumns(); 
     form.removeAllContent(); 
     for(var c = 0; c<aCols.length; c++){ 
      var oCol=aCols[c]; 
      form.addContent(new sap.m.Label({text:oCol.getHeader().getProperty("text")})); 
      form.addContent(new sap.m.Input({value:"", enabled:oCol.getHeader().enabled, editable:true})); 

     } 
     this.rowTableDialog.open(); 
    } 

의 생성이 내 모델 http://jsbin.com/saqorarafo/1/edit?js

01 관리

이 솔루션이 작동합니다! 그러나 결국 @Qualiture 제안을 듣고 각 테이블마다 하나의 대화 상자를 만들었습니다!

1

대화 상자에 추가하고 바인딩하려는 필드가 포함 된 단일 객체를 보유하는 새 JSONModel 속성을 만듭니다. 당신의 대화 양식을 제출하면 는, 객체의 배열에 객체를 추가 나는이 내 솔루션을 찾을 수

+0

괜찮지 만 다른 표가 있고 (다른 열과 함께) 대화 상자에 동일한 필드 (레이블)가 없습니다. – padibro

+0

그게 문제가 아니겠습니까? 이 경우 테이블의 대상 필드 (열)와 일치하는 새 객체를 만들고 해당 객체를 JSONModel 배열에 추가하십시오. – Qualiture

+0

솔루션을 이해했지만 새 모델을 다시 만들지는 않습니다. 내가 테이블을 바인딩하는 데 사용하는 동일한 모델을 재사용하고 싶다. 내 대답을 좋아하니? @Qualiture – padibro

관련 문제