1
1
@{
2
2
ViewBag .Title = " Home Page" ;
3
3
}
4
-
5
4
@( Html .Kendo ().Grid <SelectionPersistence .Models .Product >()
6
5
.Name (" grid" )
7
6
.Columns (columns =>
8
7
{
9
8
columns .Bound (p => p .ProductName );
10
- columns .Bound (p => p .UnitPrice ).Width (120 );
9
+ columns .Bound (p => p .UnitPrice ).Width (120 ). Format ( " {0:c} " ) ;
11
10
columns .Bound (p => p .UnitsInStock ).Width (120 );
12
11
columns .Bound (p => p .Discontinued )
13
12
.ClientTemplate (@" # if (Discontinued) { #
17
16
# } #" )
18
17
.HeaderTemplate (" <input type='checkbox' class='checkAll' />" ).Width (120 );
19
18
})
19
+ .Selectable (s => s .Mode (GridSelectionMode .Multiple ))
20
20
.Pageable ()
21
21
.Scrollable ()
22
- .Events (ev => ev .DataBound (" dataBound" ))
22
+ .Events (ev => ev
23
+ .DataBound (" dataBound" )
24
+ .Change (" changed" )
25
+ )
23
26
.HtmlAttributes (new { style = " height:550px;" })
24
27
.DataSource (dataSource => dataSource
25
28
.Ajax ()
28
31
.Read (read => read .Action (" Get_Products" , " Home" ))
29
32
)
30
33
)
31
-
34
+ < div id = " count " ></ div >
32
35
<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
+ }
34
63
35
64
function dataBound (e ) {
65
+ bound = true ;
36
66
var rows = this .tbody .find (" tr" );
67
+ var grid = e .sender ;
37
68
rows .each (function () {
38
69
var row = $ (this );
39
70
if (row .find (" input[checked='checked']" ).length > 0 ) {
40
- row . addClass ( " k-state-selected " );
71
+ grid . select (row );
41
72
}
42
73
});
74
+ bound = false ;
43
75
}
44
76
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" );
48
97
}
49
98
}
50
99
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 );
55
104
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
+ };
61
112
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
+ }
82
115
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);
96
134
97
- checkHeader ();
135
+ checkHeader (allChecked );
98
136
});
99
137
</script >
0 commit comments