2016-03-15 76 views
0

我想设置其中一列kendo网格的宽度。 这里的简单代码:如何在绑定mvc后更改kendo网格列宽?

   @(Html.Kendo() 
        .Grid<MyObject>() 
        .Name("Name") 
        .TableHtmlAttributes(new { style = "height: auto;" }) 
        .Columns(c => { 
         c.Bound(m => m.ObjectId).Hidden(); 
         c.Bound(m => m.Type).Title() 
         //Bound other fields 
          if (Model.Property) 
          { 
           c.Bound(m => m.Price).Title() 
           .HeaderHtmlAttributes(new {title = "Price"}); 
           //Here I want to change the width of my first column 
           c.Container.Columns.Where(x => x.Title == "Type").FirstOrDefault.Width(200); 
          } 
        }) 
        .Scrollable(src => src.Height(261)) 
        .DataSource(ds => ds 
         .Ajax() 
         .Events(e => e.Error("app.ui.kendo.onGridError").RequestEnd("app.ui.project.onRequestEnd")) 
         .Read(r => r 
          .Action("Action", "Controller", new { Id = @Model.Id }) 
          .Type(HttpVerbs.Get)))) 

的问题是,编译器说“的方法,委托或事件的预期”。绑定列后是否有另一种方法来改变宽度?

+0

你为什么不直接改变它c.Bound(M => m.Type).title伪()。宽度(200)? – user5135401

+0

@ user5135401因为我需要在if语句内部进行更改。 – user3818229

回答

1

更改之后势必就得

1)在剑道电网附加一个事件像

@(Html.Kendo().Grid<SomeModel>() 
.Name(Model) 
.Events(e => e.DataBound("some_name")) 

2)jQuery中

function some_name(e) { 
// Access the column here to set the width 
$('#SomeField').width(percentage) 
} 
+0

你的意思是'$('#Price')。width(value)'在我的情况下? 如果是这样,它没有改变。 – user3818229

+0

我的评论错误。我试图$('#Type')。width(200)并没有发生任何事情。 – user3818229

+0

检查所呈现的HTML的ID,我不认为你会与#TYPE –

0

这个问题已经被之前回答Telerik自己。在这里你去! http://www.telerik.com/forums/change-column-widths-after-grid-created

看起来它不是开箱即用的,或者至少在2013年是如此。就我个人而言,我只需从网格中获取选项,更改所需列的宽度,然后将这些选项重新应用到网格。

我的工作场所使用剑道为我们所有的用户界面的,这可能是我发现后数据绑定编辑多个选项的最简单的方法,即使他们不通过剑道方法暴露。

下面的代码只是一个例子,可能错过了一些东西,但应该让你开始。

var grid = $("#Name").data("kendoGrid"); 
var opts = grid.options; 
opts.columns[0].width = "1000px"; 
grid.setOptions(y); 

我不相信这需要一个网格刷新,但它可能。此外,我相信你可以使用字段的字符串名称绑定到列而不是索引。

+0

谢谢。我会试试看。现在我发现这个工作方式:。 '$(“#电网.K网头换行”)找到(“COLGROUP山坳”)宽(宽); 。 $(“#电网.K-格内容”)找到(“COLGROUP山坳”)(宽度);'但是我不能用这种方式找到现场.. – user3818229

+0

此外,它刷新网格。 – user3818229