2015-03-02 85 views
0

我有一個搜索屏幕,顯示'項目'實體的結果。其中一個字段是指向具有客戶名稱的「客戶」實體的鏈接。Lightswitch搜索屏幕 - 選擇您可以搜索的內容

我可以使用數據上方的搜索框按項目名稱,日期等進行搜索,但我無法按客戶名稱搜索。我猜是因爲它實際上是對單獨實體的引用。

我怎樣才能讓我可以搜索項目,使用搜索框,按客戶名稱?

試圖在這裏解釋清楚的是數據庫佈局。

Project 
------ 
ProjName 
ProjType 
ProjComment 
Client --------------- Client 
         ----- 
         Name 
         Address 

我可以通過項目字段進行搜索,但不能搜索客戶端名稱。

回答

1

爲Project實體創建自定義查詢併爲您希望搜索的所有Project和Client屬性添加可選參數。連接自定義查詢過濾器。 對於完全控制,請不要連接自定義查詢過濾器,而是在後面的代碼中過濾PreProcess事件。

1

如果您使用HTML客戶它可以在瀏覽屏幕在你的情況下,項目表相關的如下進行。如果你看一下在左側導航欄中,點擊編輯查詢並在這裏,你可以看到3個選項,過濾排序參數

過濾應該說根據你的表結構Client.Name,第二應改爲「載」,第三個應該被設置爲參數,最後第四盒是你創建你要去新的參數用作搜索框...

您可以重命名參數在底部,我總是在此時找到最佳狀態,在右下方的屬性框中將其設置爲可選。 (這意味着所有的數據將被顯示而不是任何東西,直到搜索)

現在,如果您要回到主屏幕頁面,從左側拖動此參數到主屏幕頁面,並將其設置爲文本框。在輸入內容後使用此項並按下回車鍵將顯示與您迄今鍵入內容相匹配的結果。

更多一點上面,如果你點擊「編輯PostRender代碼」並添加下面,然後輸入3個字符後,表中搜索的表將在每個手指筆劃後自動更新。

$searchBox = $("input", $(element)); 
setTimeout(function() { 
    $searchBox.focus(); 
}, 1); 

    onInputAsYouType(element, 1, function (text) { 
    contentItem.screen.[CREATED PARAM NAME] = text; //SearchText here is the data item in the screen designer linked to the query parameter 
}); 

function onInputAsYouType(element, numberOfRequiredChars, done) { 
    var inputbox = $("input", $(element)); 
    inputbox.on("input", function (e) { 
     var text = $(this).val(); 
     if (text.length >= numberOfRequiredChars) 
      done(text); 
    }); 
}; 

};