Files
2022-11-04 13:24:24 +02:00

432 lines
17 KiB
HTML
Executable File

<!DOCTYPE html>
<html>
<head>
<title>Widget binding</title>
<meta charset="utf-8">
<link href="../content/shared/styles/examples-offline.css" rel="stylesheet">
<link href="../../styles/kendo.common.min.css" rel="stylesheet">
<link href="../../styles/kendo.rtl.min.css" rel="stylesheet">
<link href="../../styles/kendo.default.min.css" rel="stylesheet">
<link href="../../styles/kendo.default.mobile.min.css" rel="stylesheet">
<script src="../../js/jquery.min.js"></script>
<script src="../../js/jszip.min.js"></script>
<script src="../../js/kendo.all.min.js"></script>
<script src="../content/shared/js/console.js"></script>
<script>
</script>
</head>
<body>
<a class="offline-button" href="../index.html">Back</a>
<div id="example">
<div class="demo-section k-content wide">
<h4>Current view model state</h4>
<pre class="prettyprint">
{
autoCompleteValue: <span data-bind="text: displayAutoCompleteValue"></span>,
comboBoxValue: <span data-bind="text: displayComboBoxValue"></span>,
dropDownListValue: <span data-bind="text: displayDropDownListValue"></span>,
datePickerValue: <span data-bind="text: displayDatePickerValue"></span>,
timePickerValue: <span data-bind="text: displayTimePickerValue"></span>,
numericTextBoxValue: <span data-bind="text: displayNumericTextBoxValue"></span>,
sliderValue: <span data-bind="text: sliderValue"></span>,
multiSelectValue: <span data-bind="text: displayMultiSelectValue"></span>,
gridSource: [
<span data-bind="text: displayGridSource"></span> ],
treeviewSource: [
<span data-bind="text: displayTreeviewSource"></span> ]
}
</pre>
</div>
<div class="demo-section k-content wide">
<ul class="fieldlist">
<li>
<h4>AutoComplete</h4>
<input data-role="autocomplete" data-text-field="name" data-bind="source: colors, value: autoCompleteValue"/>
</li>
<li>
<h4>ComboBox:</h4>
<select data-role="combobox" data-text-field="name" data-value-field="value" data-bind="source: colors, value: comboBoxValue"></select>
</li>
<li>
<h4>DropDownList:</h4>
<select data-role="dropdownlist" data-text-field="name" data-value-field="value" data-bind="source: colors, value: dropDownListValue"></select>
</li>
<li>
<h4>DatePicker:</h4>
<input data-role="datepicker" data-bind="value: datePickerValue" />
</li>
<li>
<h4>TimePicker:</h4>
<input data-role="timepicker" data-bind="value: timePickerValue" />
</li>
<li>
<h4>NumericTextBox:</h4>
<input data-role="numerictextbox" data-format="c" data-bind="value: numericTextBoxValue" />
</li>
<li>
<h4>Slider:</h4>
<input data-role="slider" data-bind="value: sliderValue" />
</li>
<li>
<h4>TreeView</h4>
<div data-role="treeview" data-drag-and-drop="true" data-bind="source: treeviewSource"></div>
</li>
</ul>
<ul class="fieldlist">
<li>
<h4>MultiSelect:</h4>
<select multiple="multiple" data-role="multiselect" data-text-field="name" data-value-field="value" data-bind="source: colors, value: multiSelectValue"></select>
</li>
<li>
<h4>Grid</h4>
<div data-role="grid" data-sortable="true" data-editable="true" data-columns='["Name", "Price", "UnitsInStock", {"command": "destroy"}]' data-bind="source: gridSource"></div>
</li>
<li>
<h4>Splitter</h4>
<div data-role="splitter" data-panes="[{size:'30%', collapsible:true},{size:'70%'}]">
<div>Pane 1</div>
<div>Pane 2</div>
</div>
</li>
<li>
<h4>TabStrip</h4>
<div data-role="tabstrip" data-animation="false">
<ul>
<li class="k-state-active">First</li>
<li>Second</li>
</ul>
<div>
<h4>First page:</h4>
Pick a time: <input data-role="timepicker" data-bind="value: timePickerValue"/>
</div>
<div>
<h4>Second page:</h4>
Time is: <span data-bind="text: displayTimePickerValue"></span>
</div>
</div>
</li>
</ul>
</div>
<script>
function tab() {
var tabs = "";
for (var i = 0; i < stringify.level; i++) {
tabs += "\t";
}
return tabs;
}
function stringify(items) {
var item,
itemString,
levelString = "";
for (var i = 0; i < items.length; i++) {
item = items[i];
if (!item.items) {
itemString = kendo.stringify(item);
} else {
stringify.level++;
var subnodes = stringify(item.items);
stringify.level--;
delete item.items;
itemString = kendo.stringify(item);
itemString = itemString.substring(0, itemString.length - 1);
itemString += ",\"items\":[\r\n" + subnodes + tab() + "]}";
}
levelString += tab() + itemString;
if (i != items.length - 1) {
levelString += ",";
}
levelString += "\r\n";
}
return levelString;
}
stringify.level = 1;
$(document).ready(function() {
var Node = kendo.data.Node;
var viewModel = kendo.observable({
autoCompleteValue: null,
colors: [
{ name: "Red", value: "#f00" },
{ name: "Green", value: "#0f0" },
{ name: "Blue", value: "#00f" }
],
displayAutoCompleteValue: function() {
var autoCompleteValue = this.get("autoCompleteValue");
return kendo.stringify(autoCompleteValue);
},
comboBoxValue: null,
displayComboBoxValue: function() {
var comboBoxValue = this.get("comboBoxValue");
return kendo.stringify(comboBoxValue);
},
dropDownListValue: null,
displayDropDownListValue: function() {
var dropDownListValue = this.get("dropDownListValue");
return kendo.stringify(dropDownListValue);
},
numericTextBoxValue: 10,
displayNumericTextBoxValue: function() {
var numericTextBoxValue = this.get("numericTextBoxValue");
return kendo.toString(numericTextBoxValue, "c");
},
datePickerValue: new Date(),
displayDatePickerValue: function() {
var datePickerValue = this.get("datePickerValue");
return kendo.toString(datePickerValue, "yyyy-MM-dd");
},
timePickerValue: new Date(),
displayTimePickerValue: function() {
var timePickerValue = this.get("timePickerValue");
return kendo.toString(timePickerValue, "hh:mm:ss");
},
multiSelectValue: [],
displayMultiSelectValue: function() {
var multiSelectValue = this.get("multiSelectValue");
return kendo.stringify(multiSelectValue);
},
gridSource: [
{ Name: "Socks", Price: 18.00, UnitsInStock: 39 },
{ Name: "Gloves", Price: 19.00, UnitsInStock: 17 },
{ Name: "Shoes", Price: 97.00, UnitsInStock: 29 }
],
displayGridSource: function() {
return stringify(this.get("gridSource").toJSON());
},
sliderValue: 5,
treeviewSource: kendo.observableHierarchy([
{ text: "Andrew", expanded: true, items: [
{ text: "Nancy" },
{ text: "Steve" }
] }
]),
displayTreeviewSource: function() {
return stringify(this.get("treeviewSource").toJSON());
}
});
viewModel.autoCompleteValue = viewModel.colors[1];
viewModel.dropDownListValue = viewModel.colors[0];
viewModel.comboBoxValue = viewModel.colors[0];
kendo.bind($("div.demo-section"), viewModel);
});
</script>
<div class="box wide">
<h4>View source code:</h4>
<pre class="prettyprint">
&lt;div class=&quot;demo-section k-content wide&quot;&gt;
&lt;h4&gt;Current view model state&lt;/h4&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
{
autoCompleteValue: &lt;span data-bind=&quot;text: displayAutoCompleteValue&quot;&gt;&lt;/span&gt;,
comboBoxValue: &lt;span data-bind=&quot;text: displayComboBoxValue&quot;&gt;&lt;/span&gt;,
dropDownListValue: &lt;span data-bind=&quot;text: displayDropDownListValue&quot;&gt;&lt;/span&gt;,
datePickerValue: &lt;span data-bind=&quot;text: displayDatePickerValue&quot;&gt;&lt;/span&gt;,
timePickerValue: &lt;span data-bind=&quot;text: displayTimePickerValue&quot;&gt;&lt;/span&gt;,
numericTextBoxValue: &lt;span data-bind=&quot;text: displayNumericTextBoxValue&quot;&gt;&lt;/span&gt;,
sliderValue: &lt;span data-bind=&quot;text: sliderValue&quot;&gt;&lt;/span&gt;,
multiSelectValue: &lt;span data-bind=&quot;text: displayMultiSelectValue&quot;&gt;&lt;/span&gt;,
gridSource: [
&lt;span data-bind=&quot;text: displayGridSource&quot;&gt;&lt;/span&gt; ],
treeviewSource: [
&lt;span data-bind=&quot;text: displayTreeviewSource&quot;&gt;&lt;/span&gt; ]
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;demo-section k-content wide&quot;&gt;
&lt;ul class=&quot;fieldlist&quot;&gt;
&lt;li&gt;
&lt;h4&gt;AutoComplete&lt;/h4&gt;
&lt;input data-role=&quot;autocomplete&quot; data-text-field=&quot;name&quot; data-bind=&quot;source: colors, value: autoCompleteValue&quot;/&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;ComboBox:&lt;/h4&gt;
&lt;select data-role=&quot;combobox&quot; data-text-field=&quot;name&quot; data-value-field=&quot;value&quot; data-bind=&quot;source: colors, value: comboBoxValue&quot;&gt;&lt;/select&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;DropDownList:&lt;/h4&gt;
&lt;select data-role=&quot;dropdownlist&quot; data-text-field=&quot;name&quot; data-value-field=&quot;value&quot; data-bind=&quot;source: colors, value: dropDownListValue&quot;&gt;&lt;/select&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;DatePicker:&lt;/h4&gt;
&lt;input data-role=&quot;datepicker&quot; data-bind=&quot;value: datePickerValue&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;TimePicker:&lt;/h4&gt;
&lt;input data-role=&quot;timepicker&quot; data-bind=&quot;value: timePickerValue&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;NumericTextBox:&lt;/h4&gt;
&lt;input data-role=&quot;numerictextbox&quot; data-format=&quot;c&quot; data-bind=&quot;value: numericTextBoxValue&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;Slider:&lt;/h4&gt;
&lt;input data-role=&quot;slider&quot; data-bind=&quot;value: sliderValue&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;TreeView&lt;/h4&gt;
&lt;div data-role=&quot;treeview&quot; data-drag-and-drop=&quot;true&quot; data-bind=&quot;source: treeviewSource&quot;&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class=&quot;fieldlist&quot;&gt;
&lt;li&gt;
&lt;h4&gt;MultiSelect:&lt;/h4&gt;
&lt;select multiple=&quot;multiple&quot; data-role=&quot;multiselect&quot; data-text-field=&quot;name&quot; data-value-field=&quot;value&quot; data-bind=&quot;source: colors, value: multiSelectValue&quot;&gt;&lt;/select&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;Grid&lt;/h4&gt;
&lt;div data-role=&quot;grid&quot; data-sortable=&quot;true&quot; data-editable=&quot;true&quot; data-columns='[&quot;Name&quot;, &quot;Price&quot;, &quot;UnitsInStock&quot;, {&quot;command&quot;: &quot;destroy&quot;}]' data-bind=&quot;source: gridSource&quot;&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;Splitter&lt;/h4&gt;
&lt;div data-role=&quot;splitter&quot; data-panes=&quot;[{size:'30%', collapsible:true},{size:'70%'}]&quot;&gt;
&lt;div&gt;Pane 1&lt;/div&gt;
&lt;div&gt;Pane 2&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;TabStrip&lt;/h4&gt;
&lt;div data-role=&quot;tabstrip&quot; data-animation=&quot;false&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;k-state-active&quot;&gt;First&lt;/li&gt;
&lt;li&gt;Second&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;h4&gt;First page:&lt;/h4&gt;
Pick a time: &lt;input data-role=&quot;timepicker&quot; data-bind=&quot;value: timePickerValue&quot;/&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Second page:&lt;/h4&gt;
Time is: &lt;span data-bind=&quot;text: displayTimePickerValue&quot;&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</pre>
<h4 style="padding-top: 2em;">View model source code:</h4>
<pre class="prettyprint">
var viewModel = kendo.observable({
autoCompleteValue: null,
colors: [
{ name: "Red", value: "#f00" },
{ name: "Green", value: "#0f0" },
{ name: "Blue", value: "#00f" }
],
displayAutoCompleteValue: function() {
var autoCompleteValue = this.get("autoCompleteValue");
return kendo.stringify(autoCompleteValue);
},
comboBoxValue: null,
displayComboBoxValue: function() {
var comboBoxValue = this.get("comboBoxValue");
return kendo.stringify(comboBoxValue);
},
dropDownListValue: null,
displayDropDownListValue: function() {
var dropDownListValue = this.get("dropDownListValue");
return kendo.stringify(dropDownListValue);
},
numericTextBoxValue: 10,
displayNumericTextBoxValue: function() {
var numericTextBoxValue = this.get("numericTextBoxValue");
return kendo.toString(numericTextBoxValue, "c");
},
datePickerValue: new Date(),
displayDatePickerValue: function() {
var datePickerValue = this.get("datePickerValue");
return kendo.toString(datePickerValue, "yyyy-MM-dd");
},
timePickerValue: new Date(),
displayTimePickerValue: function() {
var timePickerValue = this.get("timePickerValue");
return kendo.toString(timePickerValue, "hh:mm:ss");
},
multiSelectValue: [],
displayMultiSelectValue: function() {
var multiSelectValue = this.get("multiSelectValue");
return kendo.stringify(multiSelectValue);
},
gridSource: [
{ Name: "Chai", Price: 18.00, UnitsInStock: 39 },
{ Name: "Chang", Price: 19.00, UnitsInStock: 17 },
{ Name: "Mishi Kobe Niku", Price: 97.00, UnitsInStock: 29 }
],
displayGridSource: function() {
return stringify(this.get("gridSource"));
},
treeviewSource: kendo.observableHierarchy([
{ text: "Andrew", expanded: true, items: [
{ text: "Nancy" },
{ text: "Steve" }
] }
]),
displayTreeviewSource: function() {
return stringify(this.get("treeviewSource").toJSON());
}
});
viewModel.autoCompleteValue = viewModel.colors[1];
viewModel.dropDownListValue = viewModel.colors[0];
viewModel.comboBoxValue = viewModel.colors[0];
kendo.bind($("table"), viewModel);
</pre>
</div>
<style>
.demo-section > div {
float: left;
margin-bottom: 2em;
}
.fieldlist {
float: left;
margin: 0 3em 2em 0;
padding: 0;
max-width: 50%;
}
.fieldlist li {
list-style: none;
padding-bottom: 1.5em;
text-align: left;
}
.prettyprint {
background-color: #fff;
border: 1px solid #ccc;
overflow: auto;
padding: 5px;
}
</style>
</div>
</body>
</html>