اتصال از راه دور list view در Kendo Ui با استفاده از entity frame work و Web Api
پنجشنبه 16 مهر 1394در این مقاله با اتصال از راه دور میتوانیم از kendo ui استفاده کنیم. kendo یک فریم ورک جاوا اسکریپتی می باشد و از html , css , jquery و جاوا تشکیل شده است. در این مثال نیاز به نصب kendo نیست. وما میخواهیم از راه دور از ان استفاده کنیم
قبل از شروع شما باید اشنایی با MVC و WebApi داشته باشید . اجازه دهید ما یک سرویس با استفاده از Web Api ایجاد کنیم.
فقط یک پروژه Web Api در ویژوال استودیو ایجاد کنید در زیر شکل اول و دوم مربوطه را نگاه کنید.
یک کلاس جدید در Models ایجاد کنید و نام ان را به Product تغییر دهید.
و کد زیر را در ان قرار دهید
public class Product { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ProductID { get; set; } [Required] public string ProductName { get; set; } [Required] public string UnitPrice { get; set; } }
در اینجا با استفاده از روش entity frame work code first ما نیاز به ساخت کلاس پایه (context) داریم
بر روی پوشه مدل راست کلیک کنید و یک کلاس با نام ProductContext ایجاد کنید.
کد زیر را در ان قرار دهید.
public class ProductContext: DbContext { public ProductContext(): base("name=TestConnection") {} public DbSet < Product > Products { get; set; } }
قبل از هر کاری ابتدا پروژه خود را build کنید
حال وقت استفاده از scaffolding است. بر روی پوشه controller راست کلیک کنید و گزینه add را انتخاب کنید.
سپس گزینه controller a web api را انتخاب کنید . ایجاد این کلاس در شکل زیر نمایش داده شده است.
بعد از ایجاد شما میبینید که برخی کد ها از قبیل put , post , delete و get پیش تعریف شده است.
یک صفحه html درپروژه خود ایجاد کنید و نام ان را kendolist.html بگذارید. و کدهای زیر را در ان قرار دهید.
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.default.min.css" /> <script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script> <script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script> <title></title> </head> <body> <style> .product-view { float: left; width: 50%; height: 300px; box-sizing: border-box; border-top: 0; position: relative; } .product-view:nth-child(even) { border-left-width: 0; } .product-view dl { margin: 10px 10px 0; padding: 0; overflow: hidden; } .product-view dt, dd { margin: 0; padding: 0; width: 100%; line-height: 24px; font-size: 18px; } .product-view dt { font-size: 11px; height: 16px; line-height: 16px; text-transform: uppercase; opacity: 0.5; } .product-view dd { height: 46px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .product-view dd .k-widget, .product-view dd .k-textbox { font-size: 14px; } .k-listview { border-width: 1px 1px 1px 0; padding: 0; overflow: hidden; min-height: 298px; } .edit-buttons { position: absolute; bottom: 0; left: 0; right: 0; text-align: right; padding: 5px; background-color: rgba(0,0,0,0.1); } span.k-invalid-msg { position: absolute; margin-left: 6px; } .k-add-button { margin-bottom: 2em; } @media only screen and (max-width : 620px) { .product-view { width: 100%; } .product-view:nth-child(even) { border-left-width: 1px; } } </style> <div id="example"> <div class="demo-section k-header wide"> <div class="container"> <div class="row"> <div class="col-md-3"> <label>Product Name</label> </div> <div class="col-md-3"> <input type="text" id="ProductName" data-bind="value:ProductName" class="k-textbox" /> </div> </div> <div class="row"> <div class="col-md-3"> <label>Unit Cost</label> </div> <div class="col-md-3"> <input type="text" id="UnitPrice" class="k-textbox" data-bind="value:UnitPrice" /> </div> </div> <br/> <br/> <div class="row"> <button data-role="button" data-sprite-css-class="k-icon k-edit" data-bind="events: { click: InsertProduct }" style="width: 180px"> Submit </button> </div> </div> <div> <h4>Kendo List</h4> <div data-role="listview" data-template="template" data-bind="source: products, visible: isVisible" style="height: 300px; overflow: auto"></div> </div> </div> <script type="text/x-kendo-tmpl" id="template"> <div class="product-view k-widget"> <dl> <dt>Product Name</dt> <dd>#:ProductName#</dd> <dt>Unit Price</dt> <dd>#:kendo.toString(UnitPrice, "c")#</dd> </dl> </div> </script> </div>
بعد از تگ div یک تگ script قرار دهید و کد های زیر را اضافه کنید
$(document).ready(function() { var viewModel = kendo.observable({ isVisible: true, ProductName: '', UnitPrice: '', products: new kendo.data.DataSource({ batch: true, transport: { read: { url: "api/Products", dataType: "json" }, parameterMap: function(options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; } } }, schema: { model: { id: "ProductID", } }, }), InsertProduct: function(e) { e.preventDefault() $.ajax({ type: "POST", url: 'api/Products', data: { ProductName: $("#ProductName").val(), UnitPrice: $("#UnitPrice").val() }, }) } }); kendo.bind($("#example"), viewModel); })
- ASP.net MVC
- 2k بازدید
- 0 تشکر