我在这里处理虚拟机。我们为客户托管服务器,以生成他们想要的尽可能多的虚拟机。如果您是系统管理员,我希望能够搜索数据库中的任何公司,并且可以访问公司拥有的VM数量,内存使用情况,防火墙规则等。
如果我的数据库中有一家公司分配给我(已经让我完全访问了那些公司页面而无需搜索它),我可以在我的模态中看到它,我可以点击它并将它重定向到那个公司页面。但是,如果我搜索一个我已经访问过的公司,它会复制已经存在的公司名称。我想要做的是隐藏搜索结果,如果该公司名称已经存在,那么没有重复项。我被告知我可以在JQuery中做到这一点,但我很难过。
$("#SearchValue").keyup(function () {
if ($("#SearchValue").val().length === 0)
return $('#ShowResult').html('');
if ($("#SearchValue").val().length < 3)
return;
var searchCo = $('#SearchValue').val();
var data = { "searchCo": searchCo };
post(JSON.stringify(data))
.to("SystemAdmin", "GetCompanyName")
.done(function(results) {
jQuery('#ShowResult').html('');
for (var i = 0; i < results.length; i++) {
$('#ShowResult').append('<a href="@Url.Action("SwitchCustomerTo", "Account")?customerId=' + results[i].CustomerID + '"> <i class="fa fa-home"> </i>' + results[i].CompanyName + '</a></h5></p>');
}
});
答案 0 :(得分:1)
这是一种可以从锚链接中删除冗余条目的方法。您需要将customerID保存在数组中,并在遍历结果集合中的每个项目时,检查该项目中是否已存在该项目。
$("#SearchValue").keyup(function () {
if ($("#SearchValue").val().length === 0)
return $('#ShowResult').html('');
if ($("#SearchValue").val().length < 3)
return;
var searchCo = $('#SearchValue').val();
var data = { "searchCo": searchCo };
post(JSON.stringify(data))
.to("SystemAdmin", "GetCompanyName")
.done(function(results) {
var itemArray = new Array();
jQuery('#ShowResult').html('');
for (var i = 0; i < results.length; i++)
{
if(itemArray.indexOf(results[i].CustomerID) == -1)
{
itemArray.push(results[i].CustomerID);
$('#ShowResult').append('<a href="@Url.Action("SwitchCustomerTo", "Account")?customerId=' + results[i].CustomerID + '"> <i class="fa fa-home"> </i>' + results[i].CompanyName + '</a></h5></p>');
}
}
});
});
小提琴:http://jsfiddle.net/7j2wpde8/
虽然我建议您删除服务器端代码上的冗余条目。 (假设您使用C#作为服务器端代码,这就是您可以做的事情。)
[WebMethod]
public List<CustomerObject> GetCompanyName(string searchCo)
{
List<CustomerObject> result = new List<CustomerObject>();
var items = // get all company data from datasource
result = items.GroupBy(x => x.CustomerID).Select(y => y.First()).ToList();
return result;
}
编辑:
根据您的要求更新。
[WebMethod]
public List<CustomerObject> GetCompanyName(string searchCo)
{
List<CustomerObject> result = new List<CustomerObject>();
var items = // get all company data from datasource
var itemWithCompanyAccess = // get the company for which you have access to data from datasource
result = items.GroupBy(x => x.CustomerID).Select(y => y.First()).ToList();
var duplicate = items.Any(x=> x.CustomerID == itemWithCompanyAccess. CustomerID).FirstOrDefault();
if(duplicate != null)
result.remove(duplicate);
return result;
}