2015年2月22日 星期日

ERP set default org for view

begin
MO_GLOBAL.SET_POLICY_CONTEXT('S',121);
end;

select
sys_context('multi_org2','current_org_id')
from
dual

遞迴~~~ 百元買百雞

從工作開始~~程式使用遞廻的寫法並不多,一是順展、逆展 BOM,另一個是前公司因為接了 Apple的產品,其 barcode 2D有特殊的編碼原則,所以也用遞迴產生,而這次是因為姪子在大陸復旦大學讀一年級,上了 C的課程,教授出了一個作業名叫百元買百雞,規則如下,公雞1隻3元,母雞1隻1元,小雞1元3隻,請問用一百元買一百隻雞的組合為何,請用程式表現出來,真不知道是大陸的學生程度太高,還是我們太笨,叫一年級的學生寫這個,當下聽到這個題目時,直覺應該是用遞迴的方式,只是不能馬上寫的出來,而且也不想丟臉,所以用力了想了一個下午就寫好了,但是用 C#寫出來的,有興趣的人也可以試試

2014年11月4日 星期二

asp.net MVC 多國語系設定



參考文件

ASP.NET MVC 讓 jQuery Validation Plugin 動態切換顯示訊息語系

ASP.NET MVC And Localization

ASP.NET Boilerplate Localization

ASP.NET MVC 你一定要知道怎麼創立HTML Helper

Attributes Tutorial

Localization in ASP.NET MVC 4 – Upgraded

asp.net mvc multilanguage urls/routing  =>要客製一個 controller而且所有新建的controller都要繼承它

ASP.NET MVC Localization - Routing  => controller不用繼承客制的 controller (目前我使用的)

目前我參考的這一個算是蠻好設定的而且有範例碼在 GitHub,自己也有學到新東西

比如 RouteCollectionExtensions,建立一個靜態的類別,在 RouteConfig就可以使用它的方法

public static class RouteCollectionExtensions,而在作語系切換時只要將 cookie locale的值設定為指定語系即可

ASP.NET MVC + ANGULARJS SPA + LOCALIZATION


ASP.NET MVC With AngularJS

如果有使用 angularjs 並且將網頁設定成 SPA方式的話,我使用的方式還要再作修改,要不然angularjs route碰到下列情況就會有問題

 .when('/routeTwo/:donuts', {
            templateUrl: function(params) { return '/routesDemo/two?donuts=' + params.donuts; }
        })


因為在原作者再作 redirect new url時並沒有把 request params (querystring)的參數帶入,所以要在 RedirectHandler的 ProcessRequest內再把參數帶入

 public void ProcessRequest(HttpContext context)
 {
            NameValueCollection queryParameters = context.Request.QueryString;
            string qTring = string.Empty;

            if (queryParameters.Count > 0)
            {
                qTring = "?" + queryParameters.ToString();
           
            }
 
            context.Response.Redirect(this._newUrl+ qTring);
   }


ASP.NET MVC With AngularJS

 @Scripts.Render("~/bundles/angularjs")   要放在 angular.module使用之前

使用 controller的寫法

1.2
 function HelloController($scope) {
     $scope.greeting = { text: 'Hello' };
 }

1.3
var myApp = angular.module('myApp', []);

     myApp.controller('HelloController', ['$scope', function ($scope) {
         $scope.greeting = { text: 'Hello' };
     } ]);


or 

 function HelloController($scope) {
         $scope.greeting = { text: 'Hello' };
  }

// The $inject property of every controller (and pretty much every other type of object in Angular) needs to be a string array equal to the controllers arguments, only as strings
HelloController.$inject = ['$scope'];

 var myApp = angular.module('myApp', []);
 myApp.controller('HelloController', HelloController);


SPA 注意事項
1.要設定 SPA要先加入 angular-route.min.js

 //AngularJS
 bundles.Add(new ScriptBundle("~/bundles/angularjs").Include(
                        "~/Scripts/angular.min.js"
                       , "~/Scripts/angular-route.min.js"
                     
                        ));

2.設定連結
   a href="/#/routeOne"

   如果 default網頁是 Index.cshtml,可以寫成如上的連結,但如果不是,比如有一個網頁叫 SPATest.cshtml放在 Home目錄底下的話,連結修改如下:
 
   a href="/Home/SPATest/#/routeOne"

3.加上一個   <div ng-view></div>在你的 Index.cshtml (SPA的首頁)上

4.設定 angulasjs route,可儲存在 javascript檔
 
     //routing for angularjs
     var configFunction = function ($routeProvider) {
         $routeProvider.
        when('/routeOne', {
            templateUrl: '/RoutesDemo/one'
        })
        .when('/routeTwo', {
            templateUrl: '/RoutesDemo/two'
        })
       .when('/routeThree', {
            templateUrl: '/RoutesDemo/three'
        });

     }
     configFunction.$inject = ['$routeProvider'];

     myApp.config(configFunction);

5. 建立 contorller
     public class RoutesDemoController : Controller
    {
        //
        // GET: /RouttesDemo/

        public ActionResult One()
        {
            ViewBag.test = 1;
            return PartialView("SPAPartialTest");
        }

        public ActionResult Two(int donuts = 1)
        {
            ViewBag.Donuts = donuts;
            ViewBag.test = 1;
            return PartialView("Two");
        }
        public ActionResult Three()
        {
            ViewBag.test = 3;
            return PartialView("SPAPartialTest");
        }

    }

6.建立 partialview


Hands On Lab: Build a Single Page Application (SPA) with ASP.NET Web API and Angular.js

Using AngularJs, ASP.NET MVC, Web API and EntityFramework to build NLayered Single Page Web Applications

【AngularJs + ASP.NET MVC】使用AntularJs快速建立ASP.NET MVC SPA網站

Getting started with AngularJS and ASP.NET MVC - Part One
Getting started with AngularJS and ASP.NET MVC - Part Two

AngularJS 開發 ASP.NET MVC

What's the difference between “return View()” and “return PartialView()”

2014年10月29日 星期三

如何在 ASP.NET MVC 4 使用 CDN上的 java script 和 css

一般在 app_start的 BundleClass 會如下的程式碼,以讀取自己下載下來的 java script & css

 bundles.Add(new StyleBundle("~/Content/sweetalsertforbs_css").Include(
                       "~/Content/sweet-alert.css"
                       ));

 bundles.Add(new ScriptBundle("~/bundles/sweetalsertforbs_js").Include(
                       "~/Scripts/sweet-alert.js"));

如果 ASP.NET MVC要用 CDN上的資源呢,可以參考如下的作法

// BundleTable.EnableOptimizations = true;  表示在 debug mode也要使用 cnd的資源
 BundleTable.EnableOptimizations = true;

//bundles.UseCdn = true;  要存取 cdn的資源
 bundles.UseCdn = true;

//要加上 CDN的來源,一般如果 release mode使用 CDN,debug mode就使用 local的
 bundles.Add(new StyleBundle("~/Content/sweetalsertforbs_css", "//cdn.jsdelivr.net/sweetalert/0.1.2/sweet-alert.min.css").Include(
                       "~/Content/sweet-alert.css"
                       ));

bundles.Add(new ScriptBundle("~/bundles/sweetalsertforbs_js", "//cdn.jsdelivr.net/sweetalert/0.1.2/sweet-alert.min.js").Include(
                       "~/Scripts/sweet-alert.js"));

jsDeliver

參考文件

MVC 4 Part 4 - Bundles and Optimisation

2014年10月24日 星期五

jQuery getJSON()

AJAX 方面學習,今天有看到一些可以學習的的部份

jQuery.getJSON()  ,  .appendTo()

Getting Started with ASP.NET Web API 2

原本寫法
$.getJSON( "ajax/test.json", function( data ) {
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});
$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});

1.5以後的版本可以寫成如,可用 .done來作後續 data成功回傳的動作

$(document).ready(function () {
    // Send an AJAX request
    $.getJSON(apiUrl)
        .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
                // Add a list item for the product.
                $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
        });
});

var jqxhr = $.getJSON( "example.json", function() {
console.log( "success" );
}).done(function() {
console.log( "second success" );
}).fail(function() {
console.log( "error" );
}).always(function() {
console.log( "complete" );
});
jqxhr.complete(function() {
console.log( "second complete" );
});

2014年10月21日 星期二

SweetAlert for Bootstrap - A beautiful replacement for JavaScript's "alert"

連結
SweetAlert 官網
document.querySelector()說明

先把 js, css 加入後,再 javascript 程式碼加上如下程式碼, .sweet-1是指在某個 html元件宣告 class內的名稱,如 button class="btn btn-lg btn-success sweet-1" ,這樣就可以使用 SweetAlert的美麗彈出視窗了



document.querySelector('.sweet-1').onclick = function(){

swal("Here's a message!");

};