Kendo MVC网格动态列大小

时间:2014-07-01 07:29:56

标签: c# asp.net-mvc-4 kendo-grid kendo-asp.net-mvc

我的页面中有kendo mvc网格,我动态绑定它,但每列的大小都不好,我必须给出所有的静态大小,但我的列是动态的,在设计时我没有每列的大小,如何在读取方法后为网格列创建动态大小? 这就是我在视图中创建剑道网格的方法

 @(Html.NFSGrid<dynamic>("PortfolioGrid")
      .Name("PortfolioGrid")
      .EnableCustomBinding(true)
      .Selectable()
      .BindTo(Model)
      .DataSource(dataSource => dataSource
          .Ajax()
          .Model(m =>
          {

              foreach (var Allcoulms in (List<HtmlHelperGridBuilder.GridCol>)ViewData["ViewDataGridfildes"])
              {
                  if (Allcoulms.ColumnName == "Id")
                  {
                      m.Id(Allcoulms.ColumnName);
                  }
                  else
                  {
                      m.Field(Allcoulms.ColumnName, Type.GetType("System.String")).Editable(true);
                  }

              }

          })

          .ServerOperation(true)

                  .Read(read => read.Action("Read", "Portfolio").Data("portFolioNameSpace.additionalInfo")
          )
      )
      .HtmlAttributes(new { style = "width:2000;" })
      .Columns(columns =>
      {

          columns.Template(p => { }).ClientTemplate("<input name='selectedIds' type='checkbox' value=\"#=Id#\" class='check_row' onchange='portFolioNameSpace.changeChk(event,this.checked,this);'/>")
              .HeaderTemplate("<input type='checkbox' class='selectAll' onclick='portFolioNameSpace.ToggleChkBox(this.checked);'/>")
              .HeaderHtmlAttributes(new { style = "text-align:center;" })
              .Width(30);
          columns.Template(@<text></text>).Title(T("روند").ToString()).Width(30).ClientTemplate("<a onclick='portFolioNameSpace.onclickFlowFPortfolio(event)'><i class='iconmain-showall'></i></a>");


          foreach (var Allcoulms in (List<HtmlHelperGridBuilder.GridCol>)ViewData["ViewDataGridfildes"])
          {
              if (Allcoulms.ColumnName == "Id")
              {
                  columns.Bound(Allcoulms.ColumnName).Visible(false);
              }
              else if (Allcoulms.ColumnName == "Subject")
              {
                  columns.Bound(Allcoulms.ColumnName).Width(700).Title(T(Allcoulms.ColumnTitle).ToString()).HtmlAttributes(new { style = "text-align:center;" });
              }
              else if (Allcoulms.ColumnName == "Comment")
              {
                  columns.Bound(Allcoulms.ColumnName).Width(200).Title(T(Allcoulms.ColumnTitle).ToString()).HtmlAttributes(new { style = "text-align:center;" }).ClientTemplate("<input type=\"text\" id=\"#=Id#\" value=\"#=Comment#\"/>");
              }
              else if (Allcoulms.ColumnName == "notViewdRows")
              {

              }
              else
              {
                  columns.Bound(Allcoulms.ColumnName).Width(200).Title(T(Allcoulms.ColumnTitle).ToString()).HtmlAttributes(new { style = "text-align:center;" }); 
              }
          }


          //.HtmlAttributes(new { @style = "display:none" });
      })

          .Sortable(sortable => sortable
              .AllowUnsort(true)
              .SortMode(GridSortMode.MultipleColumn))
          .Pageable(pager => pager.Enabled(true))
          .Scrollable()
          .Filterable()

          .Resizable(resize => resize.Columns((true)))
          .Reorderable(reorder => reorder.Columns(true))

          .Events(e => e
              .DataBound("gridDataBound")
          )

1 个答案:

答案 0 :(得分:1)

你试过这个:

.Columns(columns =>
 {
     columns.LoadSettings((IEnumerable<GridColumnSettings>)ViewData["Columns"]);
 })

你可以通过&#39; width&#39;通过GridColumnSettings对象。