2015-02-11 65 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