使用MvcGrid.绑定过滤器MVC的Net错误
本文关键字:Net 错误 MVC 过滤器 MvcGrid 绑定 使用 | 更新日期: 2023-09-27 17:55:04
我使用MvcGrid。净
这是我的cshtml页面<div class="well">
<div class="form-inline">
<div class="form-group">
<input type="text" class="form-control" placeholder="Opprtunity ID" data-mvcgrid-type="filter" data-mvcgrid-option="opprtunityid" />
</div>
<div class="form-group">
<input class="form-control" placeholder="Cluster" data-mvcgrid-type="filter" data-mvcgrid-option="Cluster" />
</div>
<button type="button" class="btn btn-default" data-mvcgrid-apply-filter="click">Apply</button>
</div>
</div>
我有两个简单的搜索按钮。当我可以尝试将它们绑定到MVC网格配置文件时,我看不到QueryOptions
中的值。这是我的网格选项:
.WithRetrieveDataMethod((context) =>
{
var options = context.QueryOptions;
int totalRecords;
var repo = DependencyResolver.Current.GetService<General>();
string sortColumn = options.GetSortColumnData<string>();
var items = repo.GetData(out totalRecords,
options.GetFilterString("opprtunityid"),
options.GetFilterString("Cluster"),
//active,
options.GetLimitOffset(),
options.GetLimitRowcount(),
sortColumn, options.SortDirection == SortDirection.Dsc);
return new QueryResult<SourcedPartner>()
{
Items = items,
TotalRecords = totalRecords
}
options.GetFilterString("opprtunityid")这里有一个null
值
使用MVCGrid时。. Net中,必须确保在MVCGridConfig.cs中设置了表定义。
过滤的关键元素有:
在声明列时,必须确保在列定义中添加了以下代码—.AddColumns(cols => {
cols.Add("opportunityid").WithVisibility(false)
.WithFiltering(true) // MUST have filtering enabled on column definion, otherwise it will not appear in QueryOptions
.WithValueExpression(i => i.OpportunityID);
cols.Add("Cluster").WithHeaderText("Cluster")
.WithFiltering(true)
.WithVisibility(false)
.WithAllowChangeVisibility(true)
.WithValueExpression(i => i.Cluster);
2) 必须确保将过滤作为MVCGridBuilder构建的一部分-
MVCGridDefinitionTable.Add("Filtered", new MVCGridBuilder<SourcedPartner>()
.AddColumns(....)
.WithSorting(true, "MySortedColumnName")
.WithFiltering(true) // This lets the GridContext know that something will populate QueryOptions.Filters section
.WithRetrieveDataMethod((context) =>
{
var options = context.QueryOptions;
string opID = options.GetFilterString("opprtunityid");
string cluster = options.GetFilterString("Cluster");
.......
});
当您调试代码时,QueryOptions的Filters部分将用您的输入框中的值填充。如果没有值,则必须检查一个长度为零的字符串。
列需要启用过滤。生成器必须启用过滤。列名称必须与data- mvgrid -option名称匹配。
当所有这些设置完成后,您应该在QueryOptions的Filter部分中看到输入的值。
知道已经晚了,希望能有所帮助。
查看URL,查看正在发送的变量/s,并相应地在options.GetFilterString(******).
中设置