2015-02-11 64 views
0

我正在使用ASP.NET MVC。我嘗試執行搜索框使用JS和ASP.NET的網格搜索功能MVC

我有一個輸入框和一個按鈕:

<div> 
    <input type="text" name="Search" id="Search" /> 
    <input type="submit" value="Search" id="SearchButton" /> 
</div> 

然後我使用JS以接收用戶輸入和觸發功能:

然後,在後端,還有一個響應方法:

[HttpPost, ActionName("Search")] 
public JsonResult Search(string AutoCribItemID) { 
    List<PCAModel> allRecords = new List<PCAModel>(); 
    allRecords = db.elements.Where(model => model.AutoCribItemID.Contains(AutoCribItemID)).ToList(); 
    return Json(new { Data = allRecords }, JsonRequestBehavior.AllowGet); 
} 

你可以看到這個C#方法返回一個列表到前端。然後我想要做的是在搜索到用戶後顯示所有數據。

這裏是搜索之後,顯示的數據的方法:

function loadData(result) { 
    var table = $('<table id="indexTable"></table>'); 
    var thead = $('<thead></thead>'); 
    var trow = $('<tr class="header"></tr>'); 
    trow.append('<th>EffectiveDate</th>'); 
    trow.append('<th>ChangeAgree</th>'); 
    trow.append('<th>Client</th>'); 
    trow.append('<th>Installation</th>'); 
    trow.append('<th>AutoCribItemID</th>'); 
    trow.append('<th>RGBSupplier</th>'); 
    trow.append('<th>Price</th>'); 
    trow.append('<th>SubmitDate</th>'); 
    trow.append('<th>WINUserName</th>'); 
    trow.append('<th>Export</th>'); 
    thead.append(trow); 
    table.append(thead); 
    var tbody = $('<tbody></tbody>'); 
    for (var i = 0; i < result.length; i++) { 
     tbody.append(result[i]); 
    } 

    table.append(tbody); 

    $('#indexTableBody').html(table); 
    location.reload(); 
} 

注:上述「結果」參數是從後端C#的功能。

問題是,網頁顯示錶中的所有記錄,而不是顯示搜索到的數據。我只需要在網格搜索後顯示數據。

回答

0

不知道你的AutoCribItemID的結構,我的猜測是,因爲你在你的where子句中使用.Contains,它會返回與該搜索項匹配的任何。因此,例如,如果您有整數ID並且某人搜索了「1」,它將返回包含數字1的任何ID,包括1,10,11,12,13等。您可能想要使用等式比較來代替,即model.AutoCribItemID == AutoCribItemID

+0

看來這不是問題。我遵循你所說的話,但它不起作用。 – tonymiao 2015-02-11 16:26:48

+0

只是在黑暗中拍攝而不知道更多關於您的應用程序。 – RTigger 2015-02-11 16:45:49

+0

我發現我從後端得到了一個JSON對象。該對象包含我需要的所有信息。但我無法將此對象轉換爲JS數組。 – tonymiao 2015-02-11 18:36:55