2014年12月18日 星期四

[jqGrid] jqGrid 屬性


jqgrid 屬性http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options

一、jqGrid 屬性:

1、datatype:
     local 本地
     json json數據格式
     jsonstring
     xml
     xmlstring
     javascript
     function
     clientSide

2、width,height:列表寬度/高度
     
3、colNames(字符串數組,如:['AA','BB']):

4:colModel 列模式
     {name:'', index:'', width:50, sorttype:'int',align:'right', sortable:false}
     name:列名
     sorttype:排序類型 如:int、float、date等
     align 對齊方式: left、right。
     sortable 是否可排序:true 、false

5、multiselect 是否可多選 true、false

6、caption 列表標題

7、url 數據請求連接

8、rowNum 顯示行數

9、rowList 列表顯示行數選擇列表

10、viewrecords: true,false 是否顯示記錄總數

11、onSelectRow:選中列表記錄操作
     onSelectRow:function(ids) {
     
     }

12、direction 列表文字的排序方向


二、jqgrid 方法:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

######################## 說明:########################
<table id="list"></table>
<div id="pager"></div>
########################################################


#################### 讀取列表屬性或值 ################
1、獲取選中記錄的行號:
     var row = jQuery("#list").jqGrid('getGridParam','selrow');

2、根據行號返回選中行的數據
     var rowData = jQuery("#list").jqGrid('getRowData', row);
     rowData.***     讀取選中記錄的屬性值“***”未行屬性,如rowData.id,返回行屬性id的值

3、根據行號刪除列表數據
     var su=jQuery("#list").jqGrid('delRowData', 12);     //刪除行號未12的記錄

4、新增記錄
     var datarow = {id:"99",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"};
     var su=jQuery("#list").jqGrid('addRowData', 99, datarow);     //99未知含義

5、讀取列表請求數據的url
     jQuery('#list').jqGrid('getGridParam', 'url'))

6、返回列表的默認排序列
     jQuery('#list').jqGrid('getGridParam', 'sortname')

7、返回列表默認的排序方式
     jQuery('#list')jqGrid('getGridParam', 'sortorder')

8、返回列表選中記錄
     jQuery('#list')jqGrid('getGridParam','selrow')

9、返回列表當前頁序號:
     jQuery('#list')jqGrid('getGridParam','page'))

10、返回列表選中記錄數
     jQuery('#list').jqGrid('getGridParam','rowNum')

11、返回選中記錄數據類型:
     jQuery('#list').jqGrid('getGridParam','datatype')

12、返回列表的記錄數:
     jQuery('#list').jqGrid('getGridParam','records')

#################### 設置列表屬性或值 ################
說明:讀取相應的改为set**就能夠設置列表屬性或值.

13、選中某一行記錄
     jQuery("#list2").jqGrid('setSelection',"1");     //選中該列表第一行數據



三、ColModel API
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options





建立新的javaweb工程,添加json相關的 jar包。

附上代碼,共以後查考。



Servlet生產json數據格式:
/**
*
*/
package org.rico.demo.jqgrid.demo.dataload;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
* @author rico
* jqgrid 初始列表數據-json數據格式
*/
public class DataLoadByJSon extends HttpServlet {
     private static final long serialVersionUID = 5546844758953964549L;

     /**
      * 說明:網上借來的數據
      * 鏈接:http://www.cnblogs.com/jancyxue/archive/2011/08/17/2141676.html
      *
      *
     * jqGrid默認期望返回的json對象格式要求如下:
     * {"page":"1","total":"2","records":"13",
     * "rows":[
     *                 {id:"1",cell:["1","jancyxue","男","jancyxue@163.com","410958040","江西餘幹"]},
     *                 {id:"2",cell:["2","linda","女","linda@163.com","111111111","湖南"]},
     *                 {id:"3",cell:["3","jason","男","jason@sina.com","222222222","湖北"]},
     *                 {id:"4",cell:["4","lucy","女","lucy@sina.com","33333333","北京"]}
     *        ]
     * }
     * 當然,在js中,可以通過jqGrid的jsonReader屬性來修改默認格式
     * 我們可以在jsonReader中定義repeatitems : false。這样,可以使用下面的數據格式(为了防止出錯,我們在寫colModel的時候如果實在不會就對應着下面的每個字段寫,就不容易出錯了:
     * "rows":[
     *                 {id:"1",engName:"jancyxue",gender:" 男",email:"jancyxue@163.com",QQ:"410958040",address:"江西餘幹"]},
     *                 {id:"2",engName:"linda",gender:" 女",email:"linda@163.com",QQ:"111111111","address:湖南"]},
     *                 {id:"3",engName:"jason",gender:" 男",email:"jason@sina.com",QQ:"222222222",address:"湖北"]},
     *                 {id:"4",engName:"lucy",gender:" 女",email:"lucy@sina.com",QQ:"33333333",address:"北京"]}
     *        ]
     * 就像這样colModel:[{name:'id',index:'id',width:55},{name:'engName',index:'engName',width:100},{name:'gender',index:'gender',width:180, sortable:false},{name:'email',index:'email',width:180},
             {name:'QQ',index:'QQ',width:280},{name:'address',index:'address',width:280}]
     *
     */
     
     @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          //模擬數據
          JSONObject jo = new JSONObject();
          Integer rows = Integer.valueOf(request.getParameter("rows"));
          Integer page = Integer.valueOf(request.getParameter("page"));
          System.out.println("####rows: " + rows + "####page: " + page);
         
          Integer totalSize = 100;
          jo.put("page", page);          //當前頁
         
          Integer totalPages = totalSize%rows==0?totalSize/rows:(totalSize/rows+1);
          jo.put("total", totalPages);          //總頁數
          jo.put("records", totalSize);     //總記錄數
         
          JSONArray ja = new JSONArray();
          JSONObject rowJO = null;
         
          int index = (page-1)*rows;
          int lastIndex = page*rows;
          if(lastIndex > 100) {
               lastIndex = 100;
          }
          for(int i=1+index; i<=lastIndex; i++) {
               rowJO = new JSONObject();
               rowJO.put("id", i + "");
               rowJO.put("name", "X" + i);
               rowJO.put("sex", "XX" + i);
               rowJO.put("phone", "XXX" + i);
               rowJO.put("email", "XXXX@126.com" + i);
               
               ja.add(rowJO);
          }
         
          jo.put("rows", ja);
          System.out.println(jo.toString());
         
          response.setCharacterEncoding("UTF-8");
          PrintWriter pw = response.getWriter();
          pw.write(jo.toString());
          pw.flush();
          pw.close();
     }

     @Override
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          this.doGet(request, response);
     }
}



/**
*
*/
package org.rico.demo.jqgrid.demo.dataload;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* @author rico
* 導航到jqgrid載入數據頁面
*/
public class DataLoadIndexServlet extends HttpServlet {
     private static final long serialVersionUID = 7226355428393263783L;

     @Override
     public void doGet(HttpServletRequest req, HttpServletResponse resp)
               throws ServletException, IOException {
          System.out.println("導航到jqgrid載入數據頁面");
          req.getRequestDispatcher("/jqgrid/dataLoad/dataload_json.jsp").forward(req, resp);
     }

     @Override
     public void doPost(HttpServletRequest req, HttpServletResponse resp)
               throws ServletException, IOException {
          this.doGet(req, resp);
     }

}



<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jqgrid 載入數據</title>
<link rel="stylesheet" type="text/css" media="screen" href="${pageContext.request.contextPath}/commons/css/jquery-ui-1.8.20.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="${pageContext.request.contextPath}/commons/css/ui.jqgrid.css" />

<script type="text/javascript" src="${pageContext.request.contextPath}/commons/js/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/commons/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/commons/js/i18n/grid.locale-cn.js"></script>
<style type="text/css">
ul li {
     float: left; margin-left: 15px;
     font-size: 8pt;
}
</style>
</head>
<body>
     <div style="height: 50px;">
          <ul>
               <li><a href="###" onclick="getSelectedRowData();">讀取選中記錄</a></li>
               <li><a href="###" onclick="deleteRow();">刪除選中行</a></li>
               <li><a href="###" onclick="updateRow();">更新第一行數據</a></li>
               <li><a href="###" onclick="addRow();">新增數據</a></li>
               <li><a href="###" onclick="getSeletedRowIds();">獲取選中記錄的id</a></li>
               <li><a href="###" onclick="setSelectedRow();">選中第一行記錄</a></li>
          </ul>
     </div>
     <table id="list2"></table>
     <div id="pager2"></div>
</body>

<script type="text/javascript">
jQuery("#list2").jqGrid({
        url:'${pageContext.request.contextPath}/dataLoadByJSon',
     datatype: "json",
    colNames:['id','name', 'sex', 'phone','email'],
        colModel:[
             {name:'id',index:'id', width:55},
             {name:'name',index:'name', width:100},
             {name:'sex',index:'sex', width:80, align:"right"},
             {name:'phone',index:'phone', width:80, align:"right"},          
             {name:'email',index:'email', width:80,align:"right"}          
        ],
        jsonReader:{
        page:"page",
        total:"total",
        repeatitems:false
    },
    pager:jQuery('#pager1'),
        rowNum:10,
        rowList:[10,20,30],
        pager: '#pager2',
        sortname: 'id',
    viewrecords: true,     //是否顯示記錄總數
    sortorder: "desc",
    width:900,
    height:'400',
    //recordpos: 'left',
    multiselect: true,
    caption:"JSON Example"
});
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false, add:false, del:false});


/**獲取選中記錄數據*/
function getSelectedRowData() {
     var row = jQuery("#list2").jqGrid('getGridParam','selrow');
     if(row) {
          var selectedRow = jQuery("#list2").jqGrid('getRowData',row);
          alert("###id="+selectedRow.id+" ###name="+selectedRow.name+"...");
     } else {
          alert("未選取任何記錄.");
     }
}

/**刪除選中行*/
function deleteRow() {
     var row = jQuery("#list2").jqGrid('getGridParam','selrow');
     if(!row || row=='') {
          alert("未選取任何記錄.");return;
     }
     
     var delRow = jQuery("#list2").jqGrid('delRowData', row);
     if(delRow)
           alert("未實現相關的刪除操作 .");
}

/**更新第一行數據*/
function updateRow() {
     var rowData = jQuery("#list2").jqGrid('setRowData', 1, {id:"X!", name:"ricoXX", sex:"manXX"});
     if(rowData)
          alert("更新第一行數據成功.");
}

/**新增數據*/
function addRow() {
     var datarow = {id:"101",name:"rio",sex:"man",phone:"199876****",email:"XXX.126.com"};
     var su=jQuery("#list2").jqGrid('addRowData', 101, datarow);
     if(su)
          alert("新增數據成功。");
     else
          alert("新增數據發生錯誤。");
}

/**獲取選中記錄的id*/
function getSeletedRowIds() {
     var ids = jQuery("#list2").jqGrid('getGridParam', 'selarrrow');
     alert(ids);
}

/**選中第一行記錄*/
function setSelectedRow() {
     jQuery("#list2").jqGrid('setSelection',"1");
}

</script>
</html>


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
     <display-name>jqgridDemo</display-name>
     <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.htm</welcome-file>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>default.html</welcome-file>
          <welcome-file>default.htm</welcome-file>
          <welcome-file>default.jsp</welcome-file>
     </welcome-file-list>
     
     
     <!-- 導航到jqgrid載入數據頁面-->
     <servlet>
          <servlet-name>DataLoadIndexServlet</servlet-name>
          <servlet-class>org.rico.demo.jqgrid.demo.dataload.DataLoadIndexServlet</servlet-class>
     </servlet>
     
     <servlet-mapping>
          <servlet-name>DataLoadIndexServlet</servlet-name>
          <url-pattern>/dataLoadIndexServlet</url-pattern>
     </servlet-mapping>
     
     <!-- jqgrid載入數據-json格式 -->
     <servlet>
          <servlet-name>DataLoadByJSon</servlet-name>
          <servlet-class>org.rico.demo.jqgrid.demo.dataload.DataLoadByJSon</servlet-class>
     </servlet>
     
     <servlet-mapping>
          <servlet-name>DataLoadByJSon</servlet-name>
          <url-pattern>/dataLoadByJSon</url-pattern>
     </servlet-mapping>
     
</web-app>


2014年11月21日 星期五

[C#] Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.


form: http://ianworkshop.blogspot.tw/2014/01/validation-failed-for-one-or-more.html


可能某個不可為null的欄位, 填入了null, 但是不知道是哪個欄位, 因此使用try catch來捕抓錯誤

            try
            {
                _db.SaveChanges();
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        Trace.TraceInformation("Property: {0} Error: {1}"validationError.PropertyNamevalidationError.ErrorMessage);
                    }
                }
            }

[C#] Nullable 說明

form: http://www.dotblogs.com.tw/dotjum/archive/2008/08/02/4756.aspx



Nullable 是 .NET 2.0 所新增的類別,

主要可以用來針對 實值型別 (參考一) 給予 Null 當初始值 及 檢查是否為 null ,

這邊先瞭解關於常見 實值型別  型別有哪些,而 DateTime 在.NET Framework 實值型別(參考二)

而之前自己的經驗,在對 inet , Datetime 做處理是 null 的時候,

以 DateTime 來說會使用 DateTime.MinValue 的方式,來代表一個 Null 的值,

也聽別人的經驗說,就大家說好一個某一個日期就是null的值(但這樣非常不好,請大家不要這樣)

而使用Nullable就能方便處理實值型別初始值 的問題

Nullable 的使用也很簡單

Nullable<型別> 變數名 = null ;或   型別? 變數 = null;




2014年10月7日 星期二

[C#] 列凍結 Frozen


        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable table = GetTable();
            dataGridView1.DataSource = table;

            dataGridView1.Columns[0].Frozen = true;

        }

        /// <summary>
        /// This example method generates a DataTable.
        /// </summary>
        private DataTable GetTable()
        {
            // Here we create a DataTable with four columns.
            DataTable table = new DataTable();
            table.Columns.Add("Dosage", typeof(int));
            table.Columns.Add("Drug", typeof(string));
            table.Columns.Add("Patient", typeof(string));
            table.Columns.Add("Date", typeof(DateTime));

            for (int i = 0; i < 50; i++)
             {
                // Here we add five DataRows.
                table.Rows.Add(25 + i, "Indocin", "David", DateTime.Now);
                table.Rows.Add(50 + i, "Enebrel", "Sam", DateTime.Now);
                table.Rows.Add(10 + i, "Hydralazine", "Christoff", DateTime.Now);
                table.Rows.Add(21 + i, "Combivent", "Janet", DateTime.Now);
                table.Rows.Add(100 + i, "Dilantin", "Melanie", DateTime.Now);
            }

            return table;
        }





---------------------------






1) 列冻结
DataGridViewColumn.Frozen 属性为 true 时, 该列左侧的所有列被固定, 横向滚动时固定列不随滚动条滚动而左右移动。这对于重要列固定显示很有用。
示例代码1:
dataGridView1.Columns[0].Frozen = true;  //只锁定第1列
dataGridView1.AllowUserToOrderColumns = true; //更改栏位顺序
注意:
DataGridView.AllowUserToOrderColumns = True 时,固定列不能移动到非固定列, 反之亦然。
示例代码2:
DataGridView1.Columns[1].Frozen = true; // 锁定第1列和第2列
2) 行冻结
DataGridViewRow.Frozen 属性为 True 时, 该行上面的所有行被固定, 纵向滚动时固定行不随滚动条滚动而上下移动。
// DataGridView1 的上2行固定DataGridView1.Rows[2].Frozen = true;

http://www.phpbegin.com/2013/04/30/295.html





2014年9月30日 星期二

[Javascript]三個好用的Height,Width屬性





<script type="text/javascript">

//整個螢幕解析度
document.write("window.screen.height:" + window.screen.height + "<br/>");
document.write("window.screen.width:" + window.screen.width + "<br/>");

//扣掉視窗下面那個工作列
document.write("window.screen.availHeight:" + window.screen.availHeight + "<br/>");
document.write("window.screen.availWidth:" + window.screen.availWidth + "<br/>");

//扣掉視窗下面那個工作列 與瀏覽器工具列和邊框
document.write("document.documentElement.clientHeight:" + document.documentElement.clientHeight + "<br/>");
document.write("document.documentElement.clientWidth:" + document.documentElement.clientWidth + "<br/>");

</script>



From: http://www.dotblogs.com.tw/puma/archive/2009/04/02/javascript-width-height-clientwidth-availwidth-screen.aspx

2014年8月13日 星期三

[SQL] 小心使用With NoLock



FROM: http://www.dotblogs.com.tw/ricochen/archive/2011/04/15/22758.aspx


擷自某段文字

當你使用NoLock時,你等於是告訴SQL Server 使用者不在意資料正確性和一致性,
假設某位使用者正在更新資料表,就會影響其他使用者查詢(with nolock)該資料的正確性和一致性,
那些查詢的使用者可能會遇到重複讀取相同資料、遺漏讀取或中途讀取..等狀況,
而我更在意頁面分割的動作
(頁面分割這裡不多敘述,但你可以參考2011年4月 RUN!PC我所發表的索引概念和設計)
我只和你說頁面分割是相當耗費系統資源的動作,
你絕對不希望使用者再查詢資料時,還得同時處理頁面分割動作,
所以無論如何請一定要減少頁面分割發生的頻率。





2014年8月2日 星期六

輸入法消失及無法切換解決方式



from: http://goo.gl/9OKeS

輸入法不見了,不論怎麼切換都沒有用

 【控制台】→【地區及語言】也設定好了
但就是不出現
看來這是個辣手的問題

提供以下解決方式參考一下:

1. 點選【開始功能表】,在【搜尋程式及檔案】輸入框中輸入"regedit",按下【Enter】,進入登錄編輯程式
regedit.jpg



2. 找到 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",此行是在開機的時候應該自動執行的程式清單,看看右邊的欄位有無ctfmon字串值,若沒有出現Ctfmon,則右邊欄位點按【右鍵】新增【字串值】"Ctfmon",然後再修改這個字串值的數值資料為 "C:\Windows\system32\ctfmon.exe" 完成後關閉
regeditrun.jpg



3.重開機(或登出再登入),語言列應該就可以成功出現了





如果到此問題已解決,那恭喜你
但我的同事就沒那麼幸運了,語言列出現了,但

無法切換輸入法

【控制台】→【地區及語言】也設定好了
但就是不出現
看來這個辣手的問題

提供以下解決方式參考一下:

1. 點選【開始功能表】,在【搜尋程式及檔案】輸入框中輸入"regedit",按下【Enter】,進入登錄編輯程式

2.找到"HKEY_CURRENT_USER\Keyboard Layout\Toggle"裡的"Language Hotkey",將數值改成 1,完成後關閉

3.重開機(或登出再登入),語言列應該就可以成功出現了

2014年7月15日 星期二

[.NET ASP] 根治錯誤

from : http://blog.csdn.net/nileel/article/details/3519744


編譯完項目,訪問,經常出現“配置錯誤”,行***<add assembly="*"/>,某“DLL”文件拒绝访问。重启IIS也不行,重新编译也不对,基本每天都能遇到,频繁的时候编译一次遇到一次。狠狠的百度了一番,终于明白了。原来是windows的索引服务在搞鬼。windows的索引服务对asp.net的临时目录编制索引时,锁定了临时文件的访问权限,因此报错!
知道了原因,就好辦了

最簡單的解決辦法就是禁用索引服務,但是影響比較大。
可以刪除的PDB文件,但是調試的時候不方便
最後我採用的解決辦法是:
配置ASP.net的臨時目錄不受索引服務服務的影響的步驟如下:

1,開始 - 管理工具 - 計算機管理(Win2003的的位置,其他操作系統類似)打開計算機管理
2、展开计算机管理左边树中“服务和应用程序”节点,再在其下展开“索引服务”节点,再在其下展开“System”节点,再在其下展开“目录”节点。
3,在計算機管理的右邊我們可以看到配置的索引服務目錄。
4,在“目錄”節點上右擊鼠標,選擇“新建” - “目錄”
5,在“添加目錄”對話框中,路經輸入框中輸入ASP.net的臨時文件目錄默認應該是:
C :/ WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files文件/
6,在“包含在索引中嗎?”選項中,選擇“否”
7,單擊“確定”按鈕
8,在“索引服務”節點上右鍵單擊,重起索引服務即可。



















2014年7月7日 星期一

[C#] 如何取得 Request URL 的各個部分


from寶哥  http://blog.miniasp.com/post/2008/02/10/How-Do-I-Get-Paths-and-URL-fragments-from-the-HttpRequest-object.aspx


底下這張表就是各種跟 Browser Request 的網址相關的屬性與用法:


網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc
Request.ApplicationPath/
Request.PhysicalPathD:\Projects\Solution\web\News\Press\Content.aspx
System.IO.Path.GetDirectoryName(Request.PhysicalPath)D:\Projects\Solution\web\News\Press
Request.PhysicalApplicationPathD:\Projects\Solution\web\
System.IO.Path.GetFileName(Request.PhysicalPath)Content.aspx
Request.CurrentExecutionFilePath/News/Press/Content.aspx
Request.FilePath/News/Press/Content.aspx
Request.Path/News/Press/Content.aspx/123
Request.RawUrl/News/Press/Content.aspx/123?id=1
Request.Url.AbsolutePath/News/Press/Content.aspx/123
Request.Url.AbsoluteUrihttp://localhost:1897/News/Press/Content.aspx/123?id=1
Request.Url.Schemehttp
Request.Url.Hostlocalhost
Request.Url.Port1897
Request.Url.Authoritylocalhost:1897
Request.Url.LocalPath/News/Press/Content.aspx/123
Request.PathInfo/123
Request.Url.PathAndQuery/News/Press/Content.aspx/123?id=1
Request.Url.Query?id=1
Request.Url.Fragment 
Request.Url.Segments/
News/
Press/
Content.aspx/
123






[SQL] NOT IN clause and NULL values


from:http://stackoverflow.com/questions/129077/not-in-clause-and-null-values


當下NOT IN時,括號裡面的值含有NULL,就會甚麼都撈不到

因為null不等於任何值

null也不等於null

所以,下NOT IN時,建議將null過濾掉 WHERE *** IS NOT NULL


A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)


Query A is the same as:
select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null
Since 3 = 3 is true, you get a result.
Query B is the same as:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null
When ansi_nulls is on, 3 <> null is UNKNOWN, so the predicate evaluates to UNKNOWN, and you don't get any rows.
When ansi_nulls is off, 3 <> null is true, so the predicate evaluates to true, and you get a row.
zh-CN → zh-TW
,下

2014年7月6日 星期日

[C#] KeyValue 代碼表

from: http://www.cnblogs.com/manongxiaobing/archive/2012/11/05/2755412.html



  鍵盤按鍵 - 對應的代碼
backspace8
tab9
enter13
shift16
ctrl17
alt18
pause/break19
caps lock20
escape27
page up33
Space32
page down34
end35
home36
arrow left37
arrow up38
arrow right39
arrow down40
insert45
delete46
048
149
250
351
452
553
654
755
856
957
a65
b66
c67
d68
e69
f70
g71
h72
i73
j74
k75
l76
m77
n78
o79
p80
q81
r82
s83
t84
u85
v86
w87
x88
y89
z90
left window key91
right window key92
select key93
numpad 096
numpad 197
numpad 298
numpad 399
numpad 4100
numpad 5101
numpad 6102
numpad 7103
numpad 8104
numpad 9105
multiply106
add107
subtract109
decimal point110
divide111
f1112
f2113
f3114
f4115
f5116
f6117
f7118
f8119
f9120
f10121
f1










2014年6月26日 星期四

.NET MVC 筆記


MVC筆記

規劃兩個月製作MVC簡報,也告一段落了,紀錄其他延伸閱讀的筆記



ASP.NET MVC使用筆記
http://catchtest.pixnet.net/blog/post/29156132-asp.net-mvc%E4%BD%BF%E7%94%A8%E7%AD%86%E8%A8%98


格式化 Javascript
http://www.css88.com/tool/js_beautify/


ASP.NET MVC專案最佳化
http://blog.kkbruce.net/2013/07/asp-net-mvc-project-performance-security-up-tips.html#.U5_1ZvmSylA


確保傳輸資料的安全
http://ithelp.ithome.com.tw/question/10137427


使用输出缓存提高性能
http://www.360doc.com/content/11/0303/22/6101874_97895851.shtml


ASP.NET性能優化之讓瀏覽器緩存動態網頁

http://rritw.com/a/bianchengyuyan/_NET/20110915/128804.html


黑暗執行序 - ASP.NET MVC路由練習-API分版
http://blog.darkthread.net/post-2013-09-16-aspnet-mvc-versioning-via-routing.aspx



快快樂樂學LINQ系列
http://www.dotblogs.com.tw/hatelove/category/6084.aspx


如何提昇LINQ 的效能!?
http://flashlin.wordpress.com/2009/03/24/%E5%A6%82%E4%BD%95%E6%8F%90%E6%98%87linq-%E7%9A%84%E6%95%88%E8%83%BD/


ADO.Net Entity Framework : (二十) 提升EF執行速度方法
http://www.dotblogs.com.tw/asdtey/archive/2009/10/28/efimproveperformance.aspx?fid=58201




2014年6月23日 星期一

一般View與Partial View有什麼不同呢?



from : http://arthurmvc.blogspot.tw/2012/11/aspnet-mvcview.html


在上一章中,我曾提到過有關Controller的命名會受到限制,所有Controller都必需是Controller這幾個英文字作為結尾,同理可知,想必這裡應該也是在命名原則上作文章,是的!在View中若是以底線作為檔案名稱開頭的View,其意義就是這個View是一種Partial View!

    一般View與Partial View有什麼不同呢?
   我可以把它想作成:一般View是一個我們預期它為一個既完整又是最終的畫面呈現,而Partial View是畫中的某一部份。有的時候,一個View太過巨大在設計及維護上有著很高的障礙,為了避免太過複雜而讓自己陷入設計的泥淖,通常,會將一個View中的某幾個部份獨立出來成為Partial View。在本文前面所述,在專案的開發過程中,有的時候我們會發現某些頁面會有一個共同的部份,這個時候通常我們也會將其共同的部份切割出來成為一個Partial View並放置在Views/Share資料夾中共用。





 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template