2017-06-05 45 views
0

編輯:愚蠢的我,指着錯誤的屬性。應該一直指向ArticleDescription而不是SAPUI5 - 與列列表項目的表上的字段

我需要使用自定義列表項目的表格上的搜索字段。該表通過數據處理得很好,但現在需要添加一個搜索字段以方便搜索,因爲有時表可能會變大。

繼SAPUI5探索頁面後,我似乎無法得到此工作。

理想情況下,我希望它使用liveChange屬性,以便在飛行中完成。我已經達到了這個目標,但是我沒有響起搜索數據。

任何幫助,將不勝感激。

Table image

main.view.xml

<!-- Search box --> 
        <SearchField liveChange="onSearch" width="100%" class="sapUiMediumMarginBottom"/> 

        <!-- Table --> 
        <Table id="stock_table" itemPress="onOrderClicked" items="{stock>/Items}" keyboardMode="Edit" showFullScreenButton="true"> 
         <infoToolbar> 
          <Toolbar> 
           <ToolbarSpacer/> 
           <Label text="{ path:'stock>/CurrentDate', formatter:'.tableHeader'}"/> 
           <ToolbarSpacer/> 
          </Toolbar> 
         </infoToolbar> 
         <columns> 
          <Column minScreenWidth="Tablet" demandPopin="true"> 
           <Text text="{i18n>Article}"/> 
          </Column> 
          <Column minScreenWidth="Tablet" width="10em" demandPopin="true"> 
           <Text text="{i18n>UnitOfMeasure}"/> 
          </Column> 
          <Column minScreenWidth="Tablet" width="8em" demandPopin="true"> 
           <Text text="{i18n>Quantity}"/> 
          </Column> 
         </columns> 
         <items> 
          <ColumnListItem class="sapUiSizeCompact"> 
           <customData> 
            <core:CustomData key="mydata" value="{stock>_errorStateClass}" 
                writeToDom="true"/> 
           </customData> 

           <HBox> 
            <core:Icon src="sap-icon://message-information" 
               tooltip="{i18n>ArticleNumber}: {stock>ArticleNumber}" 
               class="sapUiSmallMarginEnd greggslightblue"/> 
            <Text text="{stock>ArticleDescription}"/> 
           </HBox> 
           <Text text="{stock>UnitOfMeasureDescription}"/> 
           <HBox> 
            <Input id="quantity_input" valueLiveUpdate="true" value="{stock>_Quantity}" 
              liveChange="onQuantityAmountChanged" 
              class="CanHaveInteraction green_enter" width="5rem"/> 
            <core:Icon src="sap-icon://message-error" 
               tooltip="{stock>_ErrorMessage}" 
               class="sapUiSmallMarginEnd greggsred input-warning-icon" 
               visible="{stock>_ErrorStatus}" press="onErrorIconPressed"/> 
            <core:Icon src="sap-icon://message-warning" 
               tooltip="{stock>_ErrorMessage}" 
               class="sapUiSmallMarginEnd greggsred input-warning-icon" 
               visible="{stock>_WarningStatus}"/> 
           </HBox> 
          </ColumnListItem> 
         </items> 
        </Table> 

main.controller.js

onSearch : function (oEvt) { 

     // add filter for search 
     var aFilters = []; 
     var sQuery = oEvt.getSource().getValue(); 
     if (sQuery && sQuery.length > 0) { 
      var filter = new Filter("Name", sap.ui.model.FilterOperator.Contains, sQuery); 
      aFilters.push(filter); 
     } 

     // update list binding 
     var list = this.getView().byId("stock_table"); 
     var binding = list.getBinding("items"); 
     binding.filter(aFilters, "Application"); 
    } 
+0

我有一個問題:你已經創建了一個屬性過濾器:'Name'但它是在你的表無處約束。你能告訴我們你在桌子上搜索/過濾哪個房產嗎? –

+0

@RahulBhardwaj {股> ArticleDescription} *更新了原來的職位與圖像 – Scott

回答

0

你確定下面的行包含一個有效的搜索查詢:

var sQuery = oEvt.getSource().getValue(); 

由於API中記錄https://openui5.hana.ondemand.com/#docs/api/symbols/sap.m.SearchField.html#event:liveChange你必須使用事件源參數「NEWVALUE」:

var sQuery = oEvt.getParameter("newValue"); 

更新

請出示你的數據結構,當你試圖在路徑過濾「名稱'。但是在表列綁定中,我看不到任何名爲'Name'的屬性。相反,你可以嘗試在屬性「ArticleDescription」過濾:

var filter = new Filter("ArticleDescription", sap.ui.model.FilterOperator.Contains, sQuery); 
+0

這只是我從SDK @Christoph – Scott

+0

@Scott的探索部分使用的示例怎麼樣的滲透路徑「名稱」:這是一個屬性你的數據結構? – Christoph

+0

你讓我發現我愚蠢的錯誤。我打電話給錯誤的屬性名稱。我曾使用Chrome UI5檢查器並讀取錯誤的值。愚蠢的我,謝謝你指出正確的方向。應該是'var filter = new Filter(「ArticleDescription」,sap.ui.model.FilterOperator.Contains,sQuery);' – Scott