我在用MvcGrid.Net
这是我的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值。
有人能解释一下为什么吗?
发布于 2018-04-20 15:08:32
在使用MVCGrid.Net时,必须确保在MVCGridConfig.cs中设置表定义。
过滤的关键要素是:
1)在声明列时,必须确保将以下代码添加到列定义中-
.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的筛选器部分将由输入框中的值填充。如果没有值,则必须检查一个零长度字符串。
该列需要启用筛选。构建器必须启用筛选。列名必须与数据-mvcgrid-选项名匹配。
当设置所有这些内容时,您应该在QueryOptions的Filter部分中看到输入的值。
知道现在很晚了,希望这能帮上忙。
发布于 2016-09-02 10:09:52
查看URL,查看在options.GetFilterString(******).中发送和相应设置的变量/s
为我工作过。
https://stackoverflow.com/questions/38199573
复制相似问题