2016-11-30 17 views
0

剣道グリッドのヘッダーバーにボタンが必要です。このボタンは、グリッドオブジェクト内の関数(GetFoo)を呼び出すことができる必要があります。データにアクセスするタイトルの剣道グリッド

UPDATE:混乱のため申し訳ありませんが、私はテキストのみ「姓」、「姓」などと、テーブルのヘッダー行に1つのボタンをしたい...だから私たちは


を持っていると思います[th] |名|姓タイトル|ボタン(getFoo()を呼び出します)


[td] | Joe | Schmo | None |

[td] | Joe |ボブ|なし|ここで

[終了更新]

は、すべてのヘルプは高く評価され剣道UI

$(document).ready(function() { 
    var grid = $("#grid").kendoGrid({ 
    dataSource: { 
     pageSize: 20, 
     data: createRandomData(50) 
    }, 
    getFoo:function(){ 
     alert('bar'); 
    }, 
    pageable: true, 
    height: 550, 
    columns: [ 
     { field: "FirstName", title: "First Name", width: "140px" }, 
     { field: "LastName", title: "Last Name", width: "140px" }, 
     { field: "Title" }, 
     { field: '',title: "<button onClick='getFoo()' value='foo'>sdf</button>" }] 
    }).data("kendoGrid"); 
}); 

からいくつか変更されたコードです!

+0

グリッドのdataBoundイベントを使用して、ヘッダーにボタンを挿入する必要があると思います。 –

+0

実際にdataBoundをあまり使用していない。これがどのように問題を解決するかの例を示すことができれば、私は見ていきます。 – user3473534

答えて

0

あなたはデータバインドされたイベントを使用することができ、この チェックのために、この実施例をheaderTemplateを使用することができると思います次のようにボタンを挿入します。

$(document).ready(function() { 
var grid = $("#grid").kendoGrid({ 
dataSource: { 
    pageSize: 20, 
    data: createRandomData(50) 
}, 
getFoo:function(){ 
    alert('bar'); 
}, 
pageable: true, 
height: 550, 
dataBound: grid_dataBound, 
columns: [ 
    { field: "FirstName", title: "First Name", width: "140px" }, 
    { field: "LastName", title: "Last Name", width: "140px" }, 
    { field: "Title" }, 
    { field: '',title: "<button onClick='getFoo()' value='foo'>sdf</button>" }] 
}).data("kendoGrid"); 
}); 

function grid_dataBound(e) { 
var grid = this; 

var lastHeaderCell = grid.thead.find("th").last(); 
var button = $("<button value='foo'>sdf</button>"); 
lastHeaderCell.html(button); 
$(button).click(function(){ 
    grid.options.getFoo(); 
}); 
} 
+0

ここであなたのコードを使ってみました:https://jsfiddle.net/ffa1fqo8/ エラーgrid.getFooは関数ではありません – user3473534

+0

ごめんなさい。私は私の答えを更新しました。 –

+0

それは、ありがとう! – user3473534

0

剣道グリッドにカスタムボタンを追加する方法はいくつかあります。 1つはツールバー項目として追加することです。あなたは、次の行につき1つのインラインを持っているだろう

.ToolBar(toolBar => toolBar.Template("<a class='k-button k-button-icontext' onclick='customCommand()' href='#'></span>Cutom Command</a>")) 

Kendo custom command button in toolbarsここでの実装についての詳細を読むことができます。

{ command: { text: "View Details", click: showDetails } 

ます。また、カスタマイズしたテンプレートを使用することができます。詳しいので、このライン

$(document).ready(function() { 
       var grid = $("#grid").kendoGrid({ 
        dataSource: { 
         pageSize: 20, 
         data: createRandomData(50) 
        }, 
        pageable: true, 
        height: 550, 
        columns: [ 
         { field: "FirstName", title: "First Name", width: "140px" }, 
         { field: "LastName", title: "Last Name", width: "140px" }, 
         { field: "Title" }, 
         { command: { text: "View Details", click: showDetails }, title: " ", width: "180px" }] 
       }).data("kendoGrid"); 

       wnd = $("#details") 
        .kendoWindow({ 
         title: "Customer Details", 
         modal: true, 
         visible: false, 
         resizable: false, 
         width: 300 
        }).data("kendoWindow"); 

       detailsTemplate = kendo.template($("#template").html()); 
      }); 

:あなたは、あなたに注意を払うようにしたいことをここ1 Kendo grid custom commands

しかし、コードを実装する方法を読むことができます剣道グリッド。もっと読むためにこのリンクをチェックしてください:Toolbar using templates

これは役立ちます、そして幸せなコーディングです!

+0

返信いただきありがとうございますが、最初のテーブルのヘッダー行には1つのボタンが必要です。 – user3473534

+0

上記のソリューションの最初の部分は、グリッド上の単一のボタン用です。実際のデモを見るには、[DEMO](http://demos.telerik.com/aspnet-mvc/grid/toolbar-テンプレート) 。その例では、ドロップダウンを使用していますが、ボタンを使用することができます。 –

0

私は通常、これを達成するために剣道のテンプレートを使用します。

{ field: " " title: " ", template: kendo.template($("#button-template").html()) } 

そして、あなたのHTMLマークアップを追加で:あなたのJavaScriptで

はにその行を変更

<script id="button-template" type="text/x-kendo-template"> 
    <button type="button" onClick='getFoo()' value='foo'> 
     Button Action 
    </button> 
</script> 

それとも、ここではあなたのグリッドのヘッダに一つのボタンを追加する方法であります:

<script type="text/x-kendo-template" id="GridToolbar"> 
    <div class="toolbar"> 
     <button type="button" onClick='getFoo()' value='foo'>Button Action</button> 
    </div> 
</script> 

は、あなたの剣道のテンプレートを作成します。

はJSであなたの剣道グリッド上でこのプロパティを設定します。

toolbar: kendo.template($("#GridToolbar").html()), 
+0

返信いただきありがとうございますが、最初のテーブルのヘッダー行には1つのボタンが必要ですが、個々の行には1つしかありません。 – user3473534

+0

更新、私の答え。私が正しくあなたを理解している場合、私のポストの2番目のオプションは、グリッドヘッダー(ツールバー)にボタンを追加しようとしている限り、役立つはずです。グリッドの最初の実際の行のボタンを他のものにしたくない場合、これはまだあなたのためではありません。 – Kyle

+0

ツールバーオプションが閉じています。私はヘッダーでそれをしたいが、私は "名"、 "姓"、 "タイトル"と同じ行にそれをしたい 私はツールバーのオプションを使用すると、ボタンを "名"などの上に置きます.. – user3473534

0

は、私はあなたが

dojo example

$("#grid").kendoGrid({ 
columns: [{ 
    field: "name", 
}, { 
    field: "FirstName", 
    title: "First Name", 
    width: "140px" 
}, { 
    field: "LastName", 
    title: "Last Name", 
    width: "140px" 
}, { 
    field: "Title", 
    headerTemplate: 'Title <button id="foo" onclick="foo()">foo</button>' 
}], 
dataSource: [{ 
    name: "Jane Doe" 
}, { 
    name: "John Doe" 
}]}); 
+0

私はhtmlとして追加することができますが、関数 "foo()"はグリッド外になければなりません。これは、大規模なアプリケーションの一部であるため、実行することができます、私はすべてのグリッドにそれを保持することを望んでいた。 – user3473534

関連する問題