AngularJs With Data Table With Dialog Box
15:23Introduction
In this post I want to show how to create angular dialog box. ngDialog is used for showing the DialogBox.Dialog Box View
Using Js and Css
<link href="/css/jquery.dataTables.css" rel="stylesheet" /> Download <link href="/css/ngDialog.css" rel="stylesheet" /> Download <link href="/css/ngDialog-theme-plain.css" rel="stylesheet" /> Download <link href="/css/ngDialog-theme-default.css" rel="stylesheet" /> Download <link href="/css/ngDialog-custom-width.css" rel="stylesheet" /> Download <script src="/js/jquery.js"></script> Download <script src="/js/jquery.dataTables.js"></script> Download <script src="/js/angular.js"></script> Download <script src="/js/angular-datatables.js"></script> Download <script src="/js/angular-resource.js"></script> Download <script src="/js/ngDialog.js"></script> Download
app.js
var app = angular.module('myApp', ['datatables', 'ngDialog', 'ngResource']); app.controller('ctrlDialog', function ($scope, $rootScope, $compile, $resource, ngDialog, $q, DTOptionsBuilder, DTColumnBuilder) { var vm = this; vm.show = show; vm.dtInstance = {}; vm.persons = {}; vm.dtOptions = DTOptionsBuilder.fromSource('/data.json') .withPaginationType('full_numbers') .withOption('createdRow', createdRow); vm.dtColumns = [ DTColumnBuilder.newColumn('id').withTitle('ID'), DTColumnBuilder.newColumn('firstName').withTitle('First name'), DTColumnBuilder.newColumn('lastName').withTitle('Last name'), DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable().renderWith(actionsHtml) ]; function show(person) { ngDialog.open({ template: 'showDialog', controller: 'ctrlDialog', className: 'ngdialog-theme-default', disableAnimation: true, scope: $scope }); $scope.ID = person.id; $scope.FirstName = person.firstName; $scope.LastName = person.lastName; } function createdRow(row, data, dataIndex) { $compile(angular.element(row).contents())($scope); } function actionsHtml(data, type, full, meta) { vm.persons[data.id] = data; return '<button title="Details" ng-click="showCase.show(showCase.persons[' + data.id + '])">Details</button>'; } });
data.json
Click here to download data.jsonView
@{ Layout = null; } <!DOCTYPE html> <html ng-app="myApp"> <head> <meta name="viewport" content="width=device-width" /> <title>Test</title> <link href="/css/jquery.dataTables.css" rel="stylesheet" /> <link href="/css/ngDialog.css" rel="stylesheet" /> <link href="/css/ngDialog-theme-plain.css" rel="stylesheet" /> <link href="/css/ngDialog-theme-default.css" rel="stylesheet" /> <link href="/css/ngDialog-custom-width.css" rel="stylesheet" /> <script src="/js/jquery.js"></script> <script src="/js/jquery.dataTables.js"></script> <script src="/js/angular.js"></script> <script src="/js/angular-datatables.js"></script> <script src="/js/angular-resource.js"></script> <script src="/js/ngDialog.js"></script> <script src="/js/app.js"></script> </head> <body> <div style="margin-left: 25%; margin-right: 25%; margin-top: 5%;"> <h1>Angular Datatable with Dialog Box</h1> <div ng-controller="ctrlDialog as showCase" style="border: 1px solid black; padding: 15px 2px 15px 2px;"> <table datatable="" dt-options="showCase.dtOptions" dt-columns="showCase.dtColumns" dt-instance="showCase.dtInstance"></table> <script type="text/ng-template" id="showDialog"> <div class="ngdialog-message"> <form name="editForm"> <h2>User Details:</h2> <div> <p><strong>ID: </strong>{{ID}}</p> <p><strong>FirstName: </strong>{{FirstName}}</p> <p><strong>LastName: </strong>{{LastName}}</p> </div> </form> </div> </script> </div> </div> </body> </html>
Controller
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace AngularDialogBox.Controllers { public class TestController : Controller { public ActionResult Index() { return View(); } } }
Error!
If you getting any error please add the following in web.config<system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent> </system.webServer>
0 comments