显示效果
页面代码(Index.cshtml):
@using AspnetMvc.NorthwindService
@using AspnetMvc.ServiceReference1
@using Infragistics.Web.Mvc
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>AdvanceFilter</title>
</head>
<body>
<link type="text/css" href="../../Style/mvc/jQueryThemes/base/ig.ui.min.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="../../Style/PageJquey/css/style.css" media="screen"/>
<link href="../../Style/mvc/jQueryThemes/base/ig.ui.editors.css" rel="stylesheet" type="text/css" />
<link href="../../Style/mvc/jQueryThemes/base/ig.ui.grid.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../Scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.tmpl.js"></script>
<script type="text/javascript" src="../../Scripts/Samples/combined/min/ig.ui.min.js"></script>
<script type="text/javascript" src="../../Scripts/ig.util.js"></script>
<script type="text/javascript" src="../../Scripts/ig.dataSource.js"></script>
<script type="text/javascript" src="../../Scripts/ig.ui.shared.js"></script>
<script type="text/javascript" src="../../Scripts/ig.ui.editors.js"></script>
<script type="text/javascript" src="../../Scripts/ig.ui.grid.framework.js"></script>
<script type="text/javascript" src="../../Scripts/ig.ui.grid.filtering.js"></script>
<script src="../../Style/PageJquey/jquery.paginate.js" type="text/javascript"></script>
@* <script type="text/javascript">
$("#grid1").live("iggridfilteringdatafiltering", function (event, args) { alert(args.owner._currentAdvancedExpressions.toString()); });
</script>*@
<script type="text/javascript">
$('#igGrid1').live('iggridfilteringdatafiltered', function (event, args) {
$.ajax({
url: "/Home/ChangePagingBar",
cache: false,
type: 'POST',
dataType: 'html',
//data: ({ page: $("#igGrid1") }),
success: function (data, textStatus, jqXHR) {
$("#paging").html(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert($("#grid").val());
}
});
});
$(document).ready(function () {
$("#demo1").paginate({
count: @ViewData["pageNum"],
start: 1,
display: 16,
border: true,
border_color: '#fff',
text_color: '#fff',
background_color: 'black',
border_hover_color: '#ccc',
text_hover_color: '#000',
background_hover_color: '#fff',
images: false,
mouse: 'press',
onChange: function (page) {
$.ajax({
url: "/Home/Paging",
cache: false,
type: 'POST',
dataType: 'html',
data: ({ page: page }),
success: function (data, textStatus, jqXHR) {
$("#bbb").html(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert($("#grid").val());
}
});
}
});
$("#clearButton").click(function () {
$("#igGrid1").igGridFiltering('filter', ([{ fieldName: "MetricId", expr: "", cond: "startWith"}]));
//$("#igGrid1").igGridPaging("pageIndex", 0);
});
var preFileName = "Content/themes/UIDarkness/jquery.ui.custom.css";
var preFileRef = document.createElement("link");
preFileRef.setAttribute("rel", "stylesheet");
preFileRef.setAttribute("type", "text/css");
preFileRef.setAttribute("href", preFileName);
document.getElementsByTagName("head")[0].appendChild(preFileRef);
$("#ThemeSelector").change(function () {
var filename = "Content/themes/" + $(this).attr('value') + "/jquery.ui.custom.css";
var fileref = document.createElement("link");
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", filename);
document.getElementsByTagName("head")[0].appendChild(fileref);
});
});
</script>
<h2>Select a theme :
<select id="ThemeSelector">
<option value="UIDarkness" selected="selected">UIDarkness</option>
<option value="UILightness" >UILightness</option>
<option value="Smoothness" >Smoothness</option>
<option value="Redmond" >Redmond</option>
<option value="LeFrog" >LeFrog</option>
<option value="Trontastic" >Trontastic</option>
<option value="MintChoc" >MintChoc</option>
</select>
</h2>
<div>
<input id="clearButton" type="button" value="Reset"/>
</div>
<div id="grid">
@(Html.Infragistics().Grid<MetricNodes>()
.ID("igGrid1")
.Columns(column =>
{
column.For(x => x.MetricId).DataType("int").HeaderText("MetricId").Width("150");
column.For(x => x.HostName).DataType("string").HeaderText("HostName").Width("200");
column.For(x => x.MetricName).DataType("string").HeaderText("MetricName").Width("200");
//column.For(x => x.AccountDate).DataType("date").HeaderText("Account Date");
//column.For(x => x.AccountType).DataType("string").HeaderText("Account Type");
//column.For(x => x.AccountBalance).DataType("number").HeaderText("Account Balance");
})
.Features(features =>
{
features.Filtering().Mode(FilterMode.Advanced).Type(OpType.Remote);
//features.Paging().PageSize(10);
features.Sorting().Mode(SortingMode.Single).Type(OpType.Remote).ColumnSettings(settings =>
{
settings.ColumnSetting().ColumnKey("Account Number").AllowSorting(true);
});
features.Selection().MouseDragSelect(true).MultipleSelection(true).Mode(SelectionMode.Row);
})
.ClientDataSourceType(ClientDataSourceType.JSON)
.Width("550")
.Height("400")
.LocalSchemaTransform(true)
//.DataSource(ViewData["metrics"])
.DataSourceUrl("/Home/GetMeteicNodes")
.DataBind().Render()
)
<div id="bbb"></div>
</div>
<div id="paging">
<div id="demo1"></div>
</div>
</body>
</html>
controller逻辑(HomeController.cs):
using System;
using System.Collections.Generic;
using System.Data.Services.Client;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AspnetMvc.ServiceReference1;
using Infragistics.Web.Mvc;
namespace AspnetMvc.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
//foreach (var Records in Models.AccountModels.GetPageNum().ToList())
//{
// int totalRecords = Records.MetricId;
// ViewData["pageNum"] = totalRecords / 10 + 1;
//}
ViewData["pageNum"] = 101;
return View();
}
public ActionResult AdvanceFilter()
{
return View();
}
[GridDataSourceAction]
public ActionResult GetMeteicNodes()
{
string page = string.Empty;
string pageSize = string.Empty;
if (!String.IsNullOrEmpty(Request.QueryString["pageIndex"]))
{
page = Request.QueryString["pageIndex"];
}
else
{
if (!String.IsNullOrEmpty(Request.QueryString["page"]))
{
page = Request.QueryString["page"];
}
else
{
page = "1";
}
}
if (!String.IsNullOrEmpty(Request.QueryString["pageSize"]))
{
pageSize = Request.QueryString["pageSize"];
}
else
{
pageSize = "10";
}
string filterMetricId = Request.QueryString["filter(MetricId)"];
string filterHostName = Request.QueryString["filter(HostName)"];
string filterMetricName = Request.QueryString["filter(MetricName)"];
string sortMetricId = Request.QueryString["sort(MetricId)"];
string sortHostName = Request.QueryString["sort(HostName)"];
string sortMetricName = Request.QueryString["sort(MetricName)"];
string filterLogic = Request.QueryString["filterLogic"];
if (!String.IsNullOrEmpty(filterLogic))
{
//ViewData["pageNum"] = Models.AccountModels.GetFilterPageNum(filterMetricId, filterHostName,
// filterMetricName, filterLogic);
Session["pageNum"] = 24;
Session["filterMetricId"] = filterMetricId;
Session["filterHostName"] = filterHostName;
Session["filterMetricName"] = filterMetricName;
Session["filterLogic"] = filterLogic;
}
return View(Models.AccountModels.GetMeteicNodes(page, pageSize, filterMetricId, filterHostName, filterMetricName, sortMetricId, sortHostName, sortMetricName, filterLogic));
}
public ActionResult Paging()
{
string page = Request["page"];
ViewData["pageIndex"] = Request["page"];
ViewData["metrics"] = Models.AccountModels.GetMeteicNodes(page, "10", Session["filterMetricId"] == null ? "" : Session["filterMetricId"].ToString(), Session["filterHostName"] == null ? "" : Session["filterHostName"].ToString(), Session["filterMetricName"] == null ? "" : Session["filterMetricName"].ToString(), Session["filterLogic"] == null ? "" : Session["filterLogic"].ToString(), "", "", "");
return PartialView();
}
public ActionResult ChangePagingBar()
{
ViewData["pageNum"] = Session["pageNum"];
return PartialView();
}
}
}
model逻辑(AccountModel.cs)
public static IQueryable<Product> GetProductList()
{
var context = new NorthwindEntities(new Uri("http://services.odata.org/Northwind/Northwind.svc/"));
var products = from product in context.Products
where (product.ProductID.Equals(8))&&(product.ProductName.Contains("a"))
select product;
//ViewData["ProductList"] = products.ToList();
List<Product> ps = products.ToList();
return products.ToList().AsQueryable<Product>();
}
public static IQueryable<MetricNodes> GetMeteicNodes(string page, string pageSize, string filterMetricId, string filterHostName, string filterMetricName, string sortMetricId, string sortHostName, string sortMetricName, string filterLogic)
{
string filterMetricIdIntercept = string.Empty;
string filterMetricIdValue = string.Empty;
string filterHostNameIntercept = string.Empty;
string filterHostNameValue = string.Empty;
string filterMetricNameIntercept = string.Empty;
string filterMetricNameValue = string.Empty;
string filterCondition = "Where ";
if (!String.IsNullOrEmpty(filterMetricId))
{
string[] arryFilterMetricId = filterMetricId.Split(',');
foreach (string s in arryFilterMetricId)
{
filterMetricIdIntercept = s.Substring(0, s.IndexOf("("));
filterMetricIdValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterMetricIdIntercept) && !String.IsNullOrEmpty(filterMetricIdValue))
{
//query.AddQueryOption(filterMetricIdIntercept, filterMetricIdValue);
switch (filterMetricIdIntercept)
{
case "startsWith":
filterCondition = filterCondition + "m.MetricId like '%" + filterMetricIdValue + "' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "m.MetricId like '" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "m.MetricId like '%" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "m.MetricId not like '%" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "m.MetricId='" + filterMetricIdValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "m.MetricId!='" + filterMetricIdValue + "' " + filterLogic + " ";
break;
}
}
}
}
if (!String.IsNullOrEmpty(filterHostName))
{
string[] arryFilterHostName = filterHostName.Split(',');
foreach (string s in arryFilterHostName)
{
filterHostNameIntercept = s.Substring(0, s.IndexOf("("));
filterHostNameValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterHostNameIntercept) && !String.IsNullOrEmpty(filterHostNameValue))
{
//query.AddQueryOption(filterHostNameIntercept, filterHostNameValue);
switch (filterHostNameIntercept)
{
case "startsWith":
filterCondition = filterCondition + "HostName like '" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "HostName like '%" + filterHostNameValue + "' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "HostName like '%" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "HostName not like '%" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "HostName='" + filterHostNameValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "HostName!='" + filterHostNameValue + "' " + filterLogic + " ";
break;
}
}
}
}
if (!String.IsNullOrEmpty(filterMetricName))
{
string[] arryfilterMetricName = filterMetricName.Split(',');
foreach (string s in arryfilterMetricName)
{
filterMetricNameIntercept = s.Substring(0, s.IndexOf("("));
filterMetricNameValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterMetricNameIntercept) && !String.IsNullOrEmpty(filterMetricNameValue))
{
//query.AddQueryOption(filterMetricNameIntercept, filterMetricNameValue);
switch (filterMetricNameIntercept)
{
case "startsWith":
filterCondition = filterCondition + "MetricName like '" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "MetricName like '%" + filterMetricNameValue + "' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "MetricName like '%" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "MetricName not like '%" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "MetricName='" + filterMetricNameValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "MetricName!='" + filterMetricNameValue + "' " + filterLogic + " ";
break;
}
}
}
}
var context = new DSPContext(new Uri("http://localhost:4561/EmiteDataService.svc/"));
if (filterLogic == "AND")
{
filterCondition = filterCondition.Substring(0, filterCondition.Length - 5);
}
else if (filterLogic == "OR")
{
filterCondition = filterCondition.Substring(0, filterCondition.Length - 4);
}
if (filterCondition.Count() < 7)
{
filterCondition = "";
}
if (!String.IsNullOrEmpty(sortMetricId) || !String.IsNullOrEmpty(sortHostName) || !String.IsNullOrEmpty(sortMetricName))
{
if (!String.IsNullOrEmpty(sortMetricId))
{
filterCondition = filterCondition + " Order By m.MetricId " + sortMetricId;
}
if (!String.IsNullOrEmpty(sortHostName))
{
filterCondition = filterCondition + " Order By HostName " + sortHostName;
}
if (!String.IsNullOrEmpty(sortMetricName))
{
filterCondition = filterCondition + " Order By MetricName " + sortMetricName;
}
}
filterCondition = HttpUtility.UrlEncode(filterCondition);
//filterCondition=HttpUtility.UrlDecode(filterCondition);
var query =
context.CreateQuery<MetricNodes>("MetricNode")
.AddQueryOption("page", page).AddQueryOption("pageSize", pageSize)
.AddQueryOption("filter", filterCondition);
if (query.Count() > 0)
{
return query;
}
else
{
return null;
}
}
public static IQueryable<MetricNodes> GetPageNum()
{
var context = new DataServiceContext(new Uri("http://localhost:4561/EmiteDataService.svc/"));
var query = context.CreateQuery<MetricNodes>("GetSumCount").AddQueryOption("entityName", "'MetricNode'");
return query;
//http://localhost:4561/EmiteDataService.svc/
//http://emite-pc/1020/EmiteDataService/Service/EmiteDataService.svc
}
public static IQueryable<MetricNodes> GetFilterPageNum(string filterMetricId, string filterHostName, string filterMetricName, string filterLogic)
{
string filterMetricIdIntercept = string.Empty;
string filterMetricIdValue = string.Empty;
string filterHostNameIntercept = string.Empty;
string filterHostNameValue = string.Empty;
string filterMetricNameIntercept = string.Empty;
string filterMetricNameValue = string.Empty;
string filterCondition = "Where ";
if (!String.IsNullOrEmpty(filterMetricId))
{
string[] arryFilterMetricId = filterMetricId.Split(',');
foreach (string s in arryFilterMetricId)
{
filterMetricIdIntercept = s.Substring(0, s.IndexOf("("));
filterMetricIdValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterMetricIdIntercept) && !String.IsNullOrEmpty(filterMetricIdValue))
{
//query.AddQueryOption(filterMetricIdIntercept, filterMetricIdValue);
switch (filterMetricIdIntercept)
{
case "startsWith":
filterCondition = filterCondition + "m.MetricId like '%" + filterMetricIdValue + "' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "m.MetricId like '" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "m.MetricId like '%" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "m.MetricId not like '%" + filterMetricIdValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "m.MetricId='" + filterMetricIdValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "m.MetricId!='" + filterMetricIdValue + "' " + filterLogic + " ";
break;
}
}
}
}
if (!String.IsNullOrEmpty(filterHostName))
{
string[] arryFilterHostName = filterHostName.Split(',');
foreach (string s in arryFilterHostName)
{
filterHostNameIntercept = s.Substring(0, s.IndexOf("("));
filterHostNameValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterHostNameIntercept) && !String.IsNullOrEmpty(filterHostNameValue))
{
//query.AddQueryOption(filterHostNameIntercept, filterHostNameValue);
switch (filterHostNameIntercept)
{
case "startsWith":
filterCondition = filterCondition + "HostName like '" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "HostName like '%" + filterHostNameValue + "' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "HostName like '%" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "HostName not like '%" + filterHostNameValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "HostName='" + filterHostNameValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "HostName!='" + filterHostNameValue + "' " + filterLogic + " ";
break;
}
}
}
}
if (!String.IsNullOrEmpty(filterMetricName))
{
string[] arryfilterMetricName = filterMetricName.Split(',');
foreach (string s in arryfilterMetricName)
{
filterMetricNameIntercept = s.Substring(0, s.IndexOf("("));
filterMetricNameValue = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1);
if (!String.IsNullOrEmpty(filterMetricNameIntercept) && !String.IsNullOrEmpty(filterMetricNameValue))
{
//query.AddQueryOption(filterMetricNameIntercept, filterMetricNameValue);
switch (filterMetricNameIntercept)
{
case "startsWith":
filterCondition = filterCondition + "MetricName like '" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "endsWith":
filterCondition = filterCondition + "MetricName like '%" + filterMetricNameValue + "' " + filterLogic + " ";
break;
case "contains":
filterCondition = filterCondition + "MetricName like '%" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "doesNotContain":
filterCondition = filterCondition + "MetricName not like '%" + filterMetricNameValue + "%' " + filterLogic + " ";
break;
case "equals":
filterCondition = filterCondition + "MetricName='" + filterMetricNameValue + "' " + filterLogic + " ";
break;
case "doesNotEqual":
filterCondition = filterCondition + "MetricName!='" + filterMetricNameValue + "' " + filterLogic + " ";
break;
}
}
}
}
var context = new DSPContext(new Uri("http://localhost:4561/EmiteDataService.svc/"));
if (filterLogic == "AND")
{
filterCondition = filterCondition.Substring(0, filterCondition.Length - 5);
}
else if (filterLogic == "OR")
{
filterCondition = filterCondition.Substring(0, filterCondition.Length - 4);
}
if (filterCondition.Count() < 7)
{
filterCondition = "";
}
filterCondition = HttpUtility.UrlEncode(filterCondition);
//filterCondition=HttpUtility.UrlDecode(filterCondition);
//var query =
// context.CreateQuery<MetricNodes>("MetricNode")
// .AddQueryOption("page", page).AddQueryOption("pageSize", pageSize)
// .AddQueryOption("filter", filterCondition);
var query = context.CreateQuery<MetricNodes>("GetSumCount").AddQueryOption("entityName", "'MetricNode'").AddQueryOption("filter",filterCondition);
if (query.Count() > 0)
{
return query;
}
else
{
return null;
}
}
两个部分视图
(paging.cshtml)
@using AspnetMvc.ServiceReference1
@using Infragistics.Web.Mvc
@(Html.Infragistics().Grid<MetricNodes>()
.ID("igGrid1")
.Columns(column =>
{
column.For(x => x.MetricId).DataType("string").HeaderText("MetricId").Width("150");
column.For(x => x.HostName).DataType("string").HeaderText("HostName").Width("200");
column.For(x => x.MetricName).DataType("string").HeaderText("MetricName").Width("200");
//column.For(x => x.AccountDate).DataType("date").HeaderText("Account Date");
//column.For(x => x.AccountType).DataType("string").HeaderText("Account Type");
//column.For(x => x.AccountBalance).DataType("number").HeaderText("Account Balance");
})
.Features(features =>
{
features.Filtering().Mode(FilterMode.Advanced).Type(OpType.Remote);
//features.Paging().PageSize(10).;
features.Sorting().Mode(SortingMode.Single).Type(OpType.Remote).ColumnSettings(settings =>
{
//settings.ColumnSetting().ColumnKey("Account Number").AllowSorting(true);
});
features.Selection().MouseDragSelect(true).MultipleSelection(true).Mode(SelectionMode.Row);
})
.ClientDataSourceType(ClientDataSourceType.JSON)
.Width("550")
.Height("400")
.LocalSchemaTransform(true)
//.DataSource(ViewData["metrics"])
.DataSourceUrl("/Home/GetMeteicNodes?pageIndex=" + ViewData["pageIndex"])
.DataBind().Render()
)
(ChangePagingBar.cs)
<script type="text/javascript">
$(document).ready(function() {
$("#demo1").paginate({
count: @ViewData["pageNum"],
start: 1,
display: 16,
border: true,
border_color: '#fff',
text_color: '#fff',
background_color: 'black',
border_hover_color: '#ccc',
text_hover_color: '#000',
background_hover_color: '#fff',
images: false,
mouse: 'press',
onChange: function(page) {
$.ajax({
url: "/Home/Paging",
cache: false,
type: 'POST',
dataType: 'html',
data: ({ page: page }),
success: function(data, textStatus, jqXHR) {
$("#bbb").html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert($("#iggrid").val());
}
});
}
});
});
</script>
<div id="demo1"></div>
e.g
//http://localhost:4561/EmiteDataService.svc/
//http://emite-pc/1020/EmiteDataService/Service/EmiteDataService.svc