首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在绑定过滤器MVC上使用MvcGrid.Net错误

在绑定过滤器MVC上使用MvcGrid.Net错误
EN

Stack Overflow用户
提问于 2016-07-05 09:17:39
回答 2查看 1.2K关注 0票数 1

我在用MvcGrid.Net

这是我的cshtml页面

代码语言:javascript
复制
<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中的值。

这是我的网格选项:

代码语言:javascript
复制
.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值。

有人能解释一下为什么吗?

EN

回答 2

Stack Overflow用户

发布于 2018-04-20 15:08:32

在使用MVCGrid.Net时,必须确保在MVCGridConfig.cs中设置表定义。

过滤的关键要素是:

1)在声明列时,必须确保将以下代码添加到列定义中-

代码语言:javascript
复制
.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结构的一部分-

代码语言:javascript
复制
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部分中看到输入的值。

知道现在很晚了,希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2016-09-02 10:09:52

查看URL,查看在options.GetFilterString(******).中发送和相应设置的变量/s

为我工作过。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38199573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档