一步一步搭框架(asp.netmvc+easyui+sqlserver)-02

来源:http://www.cnblogs.com/sampleFrame/archive/2016/04/17/5402705.html
-Advertisement-
Play Games

一步一步搭框架(asp.netmvc+easyui+sqlserver)-02 我們期望簡潔帶前臺代碼,如下: 為了這樣簡潔的前臺,我們需要準備: 1、通用的佈局模板_Layout.cshtml。base.css、base.js、defaultSettings.js、tool.js和private. ...


一步一步搭框架(asp.netmvc+easyui+sqlserver)-02

我們期望簡潔帶前臺代碼,如下:

<table id="dataGrid" class="easyui-datagrid" url="getList" toolbar="#toolbar">
    <thead>
        <tr>
            <th field="customerId" sortable="true" data-options="sortable:true" width="50">
                customerId
            </th>
            <th field="companyName" data-options="sortable:true" width="50">
                companyName
            </th>
            <th field="phone" width="50">
                phone
            </th>
            <th field="address" width="50">
                address
            </th>
        </tr>
    </thead>
</table>
<div id="toolbar">
    <div>
        <a class="easyui-linkbutton" iconcls="icon-add" onclick="add();">添加</a>
        <a class="easyui-linkbutton" iconcls="icon-edit" onclick="edit();">修改</a>
        <a class="easyui-linkbutton" iconcls="icon-remove" onclick="del();">刪除</a>
    </div>
    <div>
        <input id="queryBox" class="easyui-textbox" buttonicon="icon-search" style="width: 200px;"
            data-options="onClickButton:function(){loadList(loadListSettings);}" />
        <a class="easyui-linkbutton" iconcls="icon-find" onclick="showQueryWindow();">
            詳細查詢</a>
    </div>
</div>
<script type="text/javascript">
    var loadListSettings = { searchFields: "customerId,companyName", prompt: "請輸入客戶Id或公司名稱" };
</script>
<script type="text/javascript">
    pageInit();  
</script>


為了這樣簡潔的前臺,我們需要準備:

1、通用的佈局模板_Layout.cshtml。base.css、base.js、defaultSettings.js、tool.js和private.js見後面

<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
    <link href='/webResource/easyui/themes/default/easyui.css' rel='stylesheet' type='text/css' />
    <link href='/webResource/easyui/themes/icon.css' rel='stylesheet' type='text/css' />
    <link href='/webResource/base.css' rel='stylesheet' type='text/css' />
    <script src="/webResource/jquery/jquery.min.js" type="text/javascript"></script>
     <script src="/webResource/jquery/json2.js" type="text/javascript"></script>
    <script src="/webResource/easyui/jquery.easyui.min.js" type="text/javascript"></script>
    <script src="/webResource/easyui/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
    <script src="/webResource/tool.js" type="text/javascript"></script>
    <script src="/webResource/base.js" type="text/javascript"></script>
    <script src="/webResource/defaultSettings.js" type="text/javascript"></script>
    <script src="/webResource/private.js" type="text/javascript"></script>
    @RenderSection("scripts", required: false)
</head>
<body style="width: 100%; height: 100%; margin: 0px;">
    @RenderBody()
</body>
</html>


2、平臺樣式表base.css

.icon-find
{
    background: url('icons/find.png') no-repeat center center;
}

.datagrid-toolbar div:nth-child(1)
{
    float: left;
    width: 60%;
}
.datagrid-toolbar div:nth-child(2)
{
    margin-left: 60%;
    margin-right: 10px;
    width: auto;
    text-align: right;
}

 

3、基本方法腳本base.js

//取消自動渲染
$.parser.auto = false;

function pageInit() {

    //改變控制項預設值
    $.fn.linkbutton.defaults.plain = true;
    $.fn.datagrid.defaults.fit = true;
    $.fn.datagrid.defaults.fitColumns = true;
    $.fn.datagrid.defaults.pagination = true;

    //顯示ajax異常信息
    $(document).ajaxError(function (event, xhr, options, exc) {
        $.messager.alert({ title: '非同步請求出錯', msg: xhr.responseText, icon: "error" });
    });

    //地址欄傳參允許中文
    jQuery(document).ajaxSend(function (event, request, options) {
        options.url = encodeURI(options.url);
    });

    $.parser.parse();
}

function loadList(settings) {
    var settings = $.extend(true, {}, loadListDefaultSettings, settings);

    if ($("#" + settings.gridId).length == 0)
        $.messager.alert({ title: "系統異常", msg: "DataGrid:" + settings.gridId + "不存在!", icon: "error" });

    var quickQueryData = [];
    if ($("#" + settings.queryBoxId).length > 0) {
        var val = $("#" + settings.queryBoxId).textbox("getValue");
        if (settings.searchFields && val) {
            var keys = settings.searchFields.split(',');
            for (i = 0, len = keys.length; i < len; i++) {
                quickQueryData.push({ field: keys[i], method: 'inLike', value: val });
            }
        }
    }

    var queryData = []; //詳細查詢預留  

    //載入數據
    $("#" + settings.gridId).datagrid("load", { quickQueryData: JSON.stringify(quickQueryData), queryData: JSON.stringify(queryData) });
}

 

4、基本腳本預設值defaultSettings.js

//查詢參數設置
var loadListDefaultSettings = {
    url: "getList",
    gridId: "dataGrid",
    queryWindowId: "queryWindow",
    queryBoxId: "queryBox",
    searchFields: "Name",
    addQueryString: true,
    prompt: "請輸入"
};


5、可能需要使用的工具方法tool.js

//判斷是否包含地址欄參數
function hasQueryString(key, url) {
    if (typeof (url) == "undefined")
        url = window.location.search;

    var re = new RegExp("[?&]" + key + "=([^\\&]*)", "i");
    var a = re.exec(url);
    if (a == null) return false;
    return true;
}

//獲取地址欄參數,如果參數不存在則返回空字元串
function getQueryString(key, url) {
    if (typeof (url) == "undefined")
        url = window.location.search;
    var re = new RegExp("[?&]" + key + "=([^\\&]*)", "i");
    var a = re.exec(url);
    if (a == null) return "";
    return a[1];
}

//將當前地址欄參數加入到url
function addUrlSearch(url) {
    var newParams = [];

    var paramKeys = window.location.search.replace('?', '').split('&');
    for (var i = 0; i < paramKeys.length; i++) {
        var key = paramKeys[i].split('=')[0];
        if (key == "" || key == "_t" || key == "_winid" || key == "isTab")
            continue;
        if (!hasQueryString(key, url))
            newParams.push(paramKeys[i]);
    }

    if (url.indexOf('?') >= 0)
        return url + "&" + newParams.join('&');
    else
        return url + "?" + newParams.join('&');
}

//url增加參數
function addSearch(url, key, value) {
    if (!hasQueryString(key, url)) {
        if (url.indexOf('?') >= 0)
            return url + "&" + key + "=" + value;
        else
            return url + "?" + key + "=" + value;
    }
    else
        return url;
}

//獲取數組中對象的某個值,逗號分隔
function getValues(rows, attr) {
    var fieldValues = [];
    for (var i = 0; i < rows.length; i++) {
        if (rows[i] != null)
            fieldValues.push(rows[i][attr]);
    }
    return fieldValues.join(',');
}


6、可能需要使用的私有方法private.js,此文件包含的方法專供base.js使用,開發web時禁止使用

//替換掉Url中的{}參數
function replaceUrl(settings, pty) {
    if (!pty)
        pty = "url";
    if (!settings[pty])
        return;
    var str = settings[pty];
    var guid = "";
    var result = str.replace(/\{[0-9a-zA-Z_]*\}/g, function (e) {
        var key = e.substring(1, e.length - 1);

        if (key == "GUID") {
            if (!guid) {
                $.ajax({
                    url: "getGuid",
                    type: "post",
                    async: false,
                    success: function (text, textStatus) {
                        guid = text;
                    }
                });
            }
            return guid;
        }
        if (hasQueryString(key)) //從地址欄返回
            return getQueryString(key);
        if (settings.currentRow && settings.currentRow[key])//從當前行返回
            return settings.currentRow[key];
        if (settings.paramFrom) { //從指定控制項返回
            var ctrl = mini.get(settings.paramFrom);
            if (ctrl == undefined) {
                $.messager.alert({ title: 'UI出錯', msg: "Id為" + settings.paramFrom + "的控制項不存在!", icon: "error" });               
                return;
            }
            else if (ctrl.showCheckBox) {
                return getValues(ctrl.getCheckedNodes(), key);
            }
            else if (ctrl.getSelecteds)
                return getValues(ctrl.getSelecteds(), key);
            else if (ctrl.getValue)
                return ctrl.getValue();
        }

        return e;
    });

    settings[pty] = result;
    return result;
}

//轉化為全路徑
function changeToFullUrl(settings) {
    var url = settings.url;
    if (url.indexOf('/') == 0 || url.indexOf("http://") == 0 || url.indexOf('?') == 0 || url == "")
        return url;


    currentUrlPathName = window.location.pathname;

    var currentPathNameParts = currentUrlPathName.split('/');
    var pathNameParts = url.split('?')[0].split('/');
    if (currentPathNameParts[currentPathNameParts.length - 1] == "")
        currentPathNameParts.pop(); //去掉一個反斜線
    if (pathNameParts[pathNameParts.length - 1] == "")
        pathNameParts.pop(); //去掉一個反斜線


    var index = currentPathNameParts.length - 1;

    for (var i = 0; i < pathNameParts.length; i++) {
        if (pathNameParts[i] == "..") {
            index = index - 1;
            if (index <= 0) {
                $.messager.alert({ title: "系統異常", msg: "Url錯誤:" + url + "!", icon: "error" });
return; } continue; } if (index < currentPathNameParts.length) currentPathNameParts[index] = pathNameParts[i]; else currentPathNameParts.push(pathNameParts[i]); index = index + 1; } var length = currentPathNameParts.length; for (var i = index; i < length; i++) { currentPathNameParts.pop(); } var result = currentPathNameParts.join('/'); if (url.indexOf('?') > 0) result += url.substring(url.indexOf('?')); settings.url = result; }


以上是目前的全部前臺代碼。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • mysql found_row()和row_count()函數用於計算上一條語句影響的行數,不同的是found_row用來獲取Select得到的行數,而row_count用來獲取Update或Delete影響的行數。 MySQL中有兩個函數來計算上一條語句影響了多少行,不同於SqlServer/Or ...
  • station表 列名: stationId 站點編號 stationlon 站點經度 stationlat 站點緯度 record表 列名: recorkId 記錄編號 stationGoId 借出站點編號 stationBackId 歸還站點編號 查詢結果顯示列: stationGoId 借出站 ...
  • TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 錶面意思是輸出控制極性為高,但是意思是定時器輸入0,不反相,輸出0; 輸出控制極性為低,定時器輸入0,反相輸出1; CC1E控制開關。 #define TIM_OCPolarity_H ...
  • 1.打開命令視窗,切換成root賬戶:su - root 2.進入目錄:/etc/sysconfig/network-scripts,打開文件vi ifcfg-eth0 3.修改參數: 4.:x退出編輯,重啟服務service network start 這樣就可以了 5.額外說明: ...
  • lastlog 列出所有用戶最後登錄的時間和登錄終端的地址,如果此用戶從來沒有登錄,則顯示:**Never logged in**last 列出用戶所有的登錄時間和登錄終端的地址 ...
  • ...
  • 今天我將ExtJSExtender的源代碼發佈到了codeplex上面,項目的地址是https://extjsextender.codeplex.com/。 ExtJSExtender將ExtJS中的部分控制項進行了封裝,以asp.net控制項的伺服器控制項的形式提供,可以方便的在項目中使用。目前該項目已 ...
  • 很多初學者朋友在做項目時遇到過這樣的問題,那就是在本地調試運行的程式正常,放到伺服器上也是正常的,但是如果有了一些併發之後,就會發現頁面會出現打不開的現像,其實大多數時候是因為Ado.net鏈接沒有處理完善。當然對於老鳥來說這種情況是不會發生的。 其實避免出現這種情況和提高Connection對象的 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...