1

我的网格中有一个下拉列表在我的工具栏中。我想用该网格的列名填充下拉列表。有什么建议么?

 @(Html.Kendo().Grid(Model)    
.Name("Grid")
.Columns(columns =>
{
    columns.Bound(p => p.Name).Groupable(false);
    columns.Bound(p => p.FullName);
    //columns.Command(commandAction: command => command.Custom("ViewDetails").Click("showDetails"));
})

.DataSource(dataSource => dataSource
    .Ajax()
    .Read(read => read.Action("Customers_read", "jvIndex"))

    .PageSize(1)
)


.ToolBar(toolbar =>
{

    toolbar.Template(@<text>
                          <div class="toolbar">


                              <input type="text" class="k-input"/>
                                  @(Html.Kendo().DropDownList()
                                  .Name("categories")
                                  .OptionLabel("All")
                                  .DataTextField("")
                                  .DataValueField("")

                                  .Events(e=>e.Change("categoriesChange"))
                                  .BindTo()
                                  )

                               <button class="k-button" id="get">Filter</button>

                          </div>
                      </text>);

})
.HtmlAttributes(new { style = "height: 430px" })
.Pageable()
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .ServerOperation(false)
    .Model(model => model.Id(p => p.Name))
    .Read("ToolbarTemplate_Read", "jvIndex")
)

) )

4

3 回答 3

1

您可以使用此代码检索列名数组。

var grid = $("#grid").data("kendoGrid");
var columns = grid.columns;

// Add them to the dropdown list, maybe something like this:
$("#categories").data("kendoDropDownList").dataSource.data(columns);
于 2013-09-20T00:40:52.700 回答
1

像这样试试

 .ToolBar(toolbar =>
    {
        toolbar.Template(@<text>
           <div class="toolbar">
                   <input type="text" class="k-input"/>
                                  @(Html.Kendo().DropDownList()
                                  .Name("categories")
                                  .OptionLabel("All")
                                  .DataTextField("Text")
                                  .DataValueField("Value")
                            .AutoBind(false)
                            .Events(e => e.Change("categoriesChange"))
                            .DataSource(ds =>
                            {
                                ds.Read("column", "Grid");
                            })
                        ) 
                        </div>
        </text>);
    })

控制器

 public ActionResult column()
        {

            // your get column method 

            return Json(column, JsonRequestBehavior.AllowGet);
        }
于 2013-09-20T10:56:52.703 回答
0

我尝试了同样的事情,但运气不佳……最终只使用了一个数据表作为它们的网格模型,然后我们可以遍历模型的列名来填充下拉列表。

于 2013-09-17T17:50:20.270 回答