C# 在为空时隐藏剑道网格

本文关键字:网格 隐藏 | 更新日期: 2023-09-27 18:34:48

我的 html 代码中有以下剑道网格,如果没有数据,我试图隐藏它。我对如何做到这一点感到困惑,因为我使用的是数据源而不是遍历某些内容来添加数据。

 @(Html.Kendo().Grid<CustomerQuickHistory>()
                  .Name("TransactionDetails")
                  .Columns(cols => {
                      cols.Bound(c => c.DateOfItem).Format("{0:MM/dd/yyyy}");
                      cols.Bound(c => c.ProductName);
                      cols.Bound(c => c.Price);
                  })
                  .DataSource(ds => ds
                      .Ajax()
                      //.Group(g => g.Add(d => d.CustomerName))
                      .Sort(s => s.Add(ad => ad.DateOfItem).Descending())
                      .Read(r => r.Action("TransactionHistory_Read", "Customers", new { customerId = Model.CustomerId }))
                  )
                  )

C# 在为空时隐藏剑道网格

如何使用 DataBound 事件处理程序来定义检查绑定的数据源并显示或隐藏网格。

下面是类似内容的示例,但在这种情况下,当网格为空时,它会显示一条消息。

http://blog.falafel.com/displaying-message-kendo-ui-grid-empty/

代码示例:

 @(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(p => p.ProductName).Title("Product Name");
            columns.Bound(p => p.UnitPrice).Title("Unit Price");
            columns.Bound(p => p.UnitsInStock).Title("Units In Stock");
        })
        .Events(events => events.DataBound("onGridDataBound"))
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("Products_Read", "Grid"))
         )
    )
<script>
  function onGridDataBound(e){
    var grid = e.sender;
    
    if (grid.dataSource.total() == 0 ){
    //Hide grid
      $(grid).hide();
    }
    else{
      //Show grid
      $(grid).show();
    }
  }
  
</script>