11@{
22 ViewBag .Title = " Home Page" ;
33}
4-
54@( Html .Kendo ().Grid <SelectionPersistence .Models .Product >()
65 .Name (" grid" )
76 .Columns (columns =>
87 {
98 columns .Bound (p => p .ProductName );
10- columns .Bound (p => p .UnitPrice ).Width (120 );
9+ columns .Bound (p => p .UnitPrice ).Width (120 ). Format ( " {0:c} " ) ;
1110 columns .Bound (p => p .UnitsInStock ).Width (120 );
1211 columns .Bound (p => p .Discontinued )
1312 .ClientTemplate (@" # if (Discontinued) { #
1716 # } #" )
1817 .HeaderTemplate (" <input type='checkbox' class='checkAll' />" ).Width (120 );
1918 })
19+ .Selectable (s => s .Mode (GridSelectionMode .Multiple ))
2020 .Pageable ()
2121 .Scrollable ()
22- .Events (ev => ev .DataBound (" dataBound" ))
22+ .Events (ev => ev
23+ .DataBound (" dataBound" )
24+ .Change (" changed" )
25+ )
2326 .HtmlAttributes (new { style = " height:550px;" })
2427 .DataSource (dataSource => dataSource
2528 .Ajax ()
2831 .Read (read => read .Action (" Get_Products" , " Home" ))
2932 )
3033)
31-
34+ < div id = " count " ></ div >
3235<script >
33- var allChecked = @Html .Raw (Json .Encode (Model));
36+ var allChecked = @Html .Raw (Json .Encode (Model)),
37+ bound = false ;
38+ function changed (e )
39+ {
40+ if (! bound)
41+ {
42+ var grid = e .sender ,
43+ selected = grid .select (),
44+ data= {productsList : []}
45+
46+ selected .each (function (){
47+ var dataItem = grid .dataItem (this ),
48+ checked = $ (this ).find (" input:checkbox" ).prop (" checked" );
49+
50+ data .productsList .push ({
51+ ProductId: dataItem .ProductID ,
52+ ProductName: dataItem .ProductName ,
53+ UnitPrice: dataItem .UnitPrice ,
54+ UnitsInStock: dataItem .UnitsInStock ,
55+ Discontinued: ! checked
56+ })
57+ });
58+
59+ updateData (grid, data);
60+ }
61+
62+ }
3463
3564 function dataBound (e ) {
65+ bound = true ;
3666 var rows = this .tbody .find (" tr" );
67+ var grid = e .sender ;
3768 rows .each (function () {
3869 var row = $ (this );
3970 if (row .find (" input[checked='checked']" ).length > 0 ) {
40- row . addClass ( " k-state-selected " );
71+ grid . select (row );
4172 }
4273 });
74+ bound = false ;
4375 }
4476
45- function checkHeader () {
46- if (allChecked) {
47- $ (" .checkAll" ).prop (" checked" , " checked" );
77+ function updateData (grid , data ){
78+ $ .ajax ({
79+ url: ' @Url.Action("Select_Products", "Home")' ,
80+ data: data,
81+ type: " POST" ,
82+ success : function (res ) {
83+ checkHeader (res);
84+ grid .dataSource .fetch ();
85+ }
86+ });
87+ }
88+
89+ function checkHeader (res ) {
90+ if (res)
91+ {
92+ grid .thead .find (" .checkAll" ).prop (' checked' , ' checked' );
93+ }
94+ else
95+ {
96+ grid .thead .find (" .checkAll" ).removeProp (" checked" );
4897 }
4998 }
5099
51- $ ( document ). ready ( function () {
52- var grid = $ ( " #grid " ). data ( " kendoGrid " );
53- grid . table . on ( " click " , " .checkbox " , selectRow);
54- grid .thead . on ( " click " , " .checkAll " , selectAll );
100+ function selectRow () {
101+ var checked = this . checked ,
102+ row = $ ( this ). closest ( " tr " ),
103+ dataItem = grid .dataItem (row );
55104
56- function selectRow () {
57- var checked = this .checked ,
58- row = $ (this ).closest (" tr" ),
59- grid = $ (" #grid" ).data (" kendoGrid" ),
60- dataItem = grid .dataItem (row);
105+ var data = {productsList: [{
106+ ProductId: dataItem .ProductID ,
107+ ProductName: dataItem .ProductName ,
108+ UnitPrice: dataItem .UnitPrice ,
109+ UnitsInStock: dataItem .UnitsInStock ,
110+ Discontinued: checked}]
111+ };
61112
62- $ .ajax ({
63- url: ' @Url.Action("Select_Product", "Home")' ,
64- data: {
65- ProductId: dataItem .ProductID ,
66- ProductName: dataItem .ProductName ,
67- UnitPrice: dataItem .UnitPrice ,
68- UnitsInStock: dataItem .UnitsInStock ,
69- Discontinued: checked
70- },
71- type: " POST" ,
72- success : function (selectAll ) {
73- if (selectAll) {
74- grid .thead .find (" .checkAll" ).prop (" checked" , " checked" );
75- } else {
76- grid .thead .find (" .checkAll" ).removeProp (" checked" );
77- }
78- grid .dataSource .fetch ();
79- }
80- });
81- }
113+ updateData (grid, data);
114+ }
82115
83- function selectAll () {
84- var checked = this .checked ;
85- $ .ajax ({
86- url: ' @Url.Action("Select_Products", "Home")' ,
87- data: {
88- checkAll: checked
89- },
90- type: " POST" ,
91- success : function () {
92- grid .dataSource .fetch ();
93- }
94- });
95- }
116+ function selectAll () {
117+ var checked = this .checked ;
118+ $ .ajax ({
119+ url: ' @Url.Action("Select_AllProducts", "Home")' ,
120+ data: {
121+ checkAll: checked
122+ },
123+ type: " POST" ,
124+ success : function () {
125+ grid .dataSource .fetch ();
126+ }
127+ });
128+ }
129+
130+ $ (document ).ready (function () {
131+ grid = $ (" #grid" ).data (" kendoGrid" );
132+ grid .table .on (" click" , " .checkbox" , selectRow);
133+ grid .thead .on (" click" , " .checkAll" , selectAll);
96134
97- checkHeader ();
135+ checkHeader (allChecked );
98136 });
99137 </script >
0 commit comments