Да - вы можете использовать функцию «CurrentUser» в вашем запросе. Здесь я включил его как поле и критерии.
SELECT Field1, Field2, [CurrentUser] AS UserName FROM Table1 WHERE Field1 = [CurrentUser];
Я недавно реализовал это сам (фактически вчера) впервые. Самым большим препятствием для меня было выяснить, как написать функцию контроллера. Подпись функции - вот что мне потребовалось больше всего времени (обратите внимание на параметры _search, searchField, searchOper и searchString, которые отсутствуют в большинстве примеров asp.net mvc, которые я видел). Javascript отправляет сообщения в контроллер как для начальной загрузки, так и для поискового вызова. В коде вы увидите, что я проверяю, является ли параметр _search истинным или нет.
Ниже приведен контроллер и код JavaScript. Приношу свои извинения за любые проблемы с форматированием, поскольку я впервые публикую здесь.
public ActionResult GetAppGroups(string sidx, string sord, int page, int rows, bool _search, string searchField, string searchOper, string searchString)
{
List<AppGroup> groups = service.GetAppGroups();
List<AppGroup> results;
if (_search)
results = groups.Where(x => x.Name.Contains(searchString)).ToList();
else
results = groups.Skip(page * rows).Take(rows).ToList();
int i = 1;
var jsonData = new
{
total = groups.Count / 20,
page = page,
records = groups.Count,
rows = (
from appgroup in results
select new
{
i = i++,
cell = new string[] {
appgroup.Name,
appgroup.Description
}
}).ToArray()
};
return Json(jsonData);
}
А вот мой HTML / Javascript:
$(document).ready(function() {
$("#listGroups").jqGrid({
url: '<%= ResolveUrl("~/JSON/GetAppGroups/") %>',
datatype: 'json',
mtype: 'GET',
caption: 'App Groups',
colNames: ['Name', 'Description'],
colModel: [
{ name: 'Name', index: 'Name', width: 250, resizable: true, editable: false},
{ name: 'Description', index: 'Description', width: 650, resizable: true, editable: false},
],
loadtext: 'Loading Unix App Groups...',
multiselect: true,
pager: $("#pager"),
rowNum: 10,
rowList: [5,10,20,50],
sortname: 'ID',
sortorder: 'desc',
viewrecords: true,
imgpath: '../scripts/jqgrid/themes/basic/images'
//});
}).navGrid('#pager', {search:true, edit: false, add:false, del:false, searchtext:"Search"});
Просто следуйте эта ссылка . Это имеет все объясненные реализации...
Вы можете создать кнопку searchBtn
и можете вызвать поисковую форму по щелчку
$("#searchBtn").click(function(){
jQuery("#list4").searchGrid(
{options}
)});
@Alan - хорошо, я использовал ваш метод и расширил свой веб-сервис, чтобы ожидать эти дополнительные три параметра и проверить на наличие _search "это правда / ложь. Но чтобы сделать это, мне пришлось добавить это к моему вызову ajax в JavaScript:
if (!postdata._search) {
jQuery("#mygrid").appendPostData( {searchField:'', searchOper:'', searchString:''});
}
Если вы все еще не знаете, как работать с необязательными параметрами, просто объявите их как обнуляемые, добавив ?
после имени типа.
Теперь вы можете иметь возможность сравнить их с null
, чтобы проверить, отсутствуют ли они.
Обратите внимание, что вам не нужно делать это со строками, поскольку они уже допускают значение NULL.
См. Мою статью о codeproject, в которой объясняется, как мы можем выполнять множественный поиск в jqgrid:
Использование панели инструментов поиска jqGrid с несколькими фильтрами в ASP.NET MVC
Я использую IModelBinder для привязки настроек сетки, деревьев выражений для сортировки и фильтрации данных.