2012年7月26日 星期四

{Linq} LINQ Group 群組加總資料

//Group PN欄位,總計Instock欄位內數量

   var Inventory = (from inv in context.InventoryDatas.ToList()
                                    group inv by inv.PN
                                        into gropData
                                        select new
                                        {
                                            PN = gropData.Key,
                                            Instock = gropData.Sum(s => s.Instock),
                                        }).ToList();


參考資料:
http://www.dotblogs.com.tw/chhuang/archive/2008/05/01/3772.aspx

2012年7月23日 星期一

{C#} decimal 型態運用

當要做二值相除時,要保留小數點或指定小數點數量
則將二個欲相除的值轉為decimal型態
再使用Math.Round(結果值-decimal 型態,小數量數量)

Sample: 取結果的小數點第一位
decimal finalFesult = Math.Round((decimal)result,1);


參考資料:
http://createps.pixnet.net/blog/post/33098568-c%23-%E9%99%A4%E6%B3%95%E9%A1%AF%E7%A4%BA%E5%B0%8F%E6%95%B8%E9%BB%9E

2012年7月19日 星期四

{工具} Excel Data Reader 讀取Excel第三方元件

用來讀取Excel轉為Dataset的一項工具
但2003與2007 需call 不同的function

Sample:

FileStream stream = File.Open(FileUploader.PostedFile.FileName, FileMode.Open, FileAccess.Read);
//副檔名,區分是2003版 or 2007版
var arr = FileUploader.FileName.Split('.');
 IExcelDataReader excelReader;
if(arr.Count()==2)
  {
      if(arr[1]=="xlsx")
          //2007
          excelReader  = ExcelReaderFactory.CreateOpenXmlReader(stream);
      else
      {
           //2003
           excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
       }
       DataSet result = excelReader.AsDataSet();
//取出Excport成Datatable的Excel資料
       DataTable table = result.Tables[0];
//關閉連線
       excelReader.Close();
}

參考資料:
http://exceldatareader.codeplex.com/
http://www.dotblogs.com.tw/yc421206/archive/2011/03/13/21819.aspx

{Knowledge} Http 網頁執行的方法Get、Post

Http(Hypertext Transfer Protocol)是一種通訊協定,用於網頁發出請求(Request)給伺服器(Web Server)

往返瀏覽器、伺服器 傳輸埠
Https->443 Port
Http-->80 Port

Http Method分為9種,分別為OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT、DEBUG,其中Get、Post是可以將資料送到IIS(Web Server)端

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

Get:
使用GET的方法會將表單資訊附加在URL上並作為QueryString的一部分,QueryString是一種key/value的組合,從問號「?」開始,每一組值都是用「&」隔開,這是一種不安全的方法,具有高風險性。有心的人可以透過操控QueryString字串的方式來取得或破壞資料庫的資料

QueryString長度不能高過1,024個字元,但可在ASP.NET在4.0的版本中設定maxRequestPathLength、maxQueryStringLength這二個參數以擴大值

使用GET,如果request的網址沒有變動,則Result會是cache的,這意謂著我們取得的不見得是最新的資訊

結論:Get就像是明信片,將內容寫在外觀上(Request Headers),是容易被看見的,但也是比較便宜


Post
使用POST方法是將要傳送的資訊放在message-body中,就不用擔心資料大小的限制,可以防止使用者操作瀏覽器網址,表單的資料被隱藏在message-body中,因此,在大多數的情況下,使用POST方法將表單資料傳到Web Server端是更有效的方法,但也相對傳輸資料量大就會較慢

結論:Post就像一封信,內裝內容物(Request Body),容量比較大,但也比較貴比較沉重

差異:
在Request Headers/Request Body兩個也有差別,主要是POST有透過Send將資料送出去,因此Content-Length跟Body中都有內容,而GET則沒有,也 因此衍生了一些差異,POST因為要多送Request Body中的內容,若以達到相同功能來說,GET會比POST快一些。

--------------------------------------------------------------
使用XMLHttpRequest物件來看
XMLHttpRequest XHR=new XMLHttpRequest();
Get用法:
XHR.open('GET', url?key=value, false);
XHR.send() ;
Post用法:
XHR.open('POST', url, false);
XHR.send(FormData) ;

傳入參數時:
GET 方式
var postContent ="name=" + encodeURIComponent("xiaocheng") + "&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");
xmlhttp.open("GET", "somepage" + "?" + postContent, true);
xmlhttp.send(null);


POST 方式

var postContent ="name=" + encodeURIComponent("xiaocheng") + "&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");
xmlhttp.open("POST", "somepage", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-Type", "text/xml"); //如果发送的是一个xml文件
xmlhttp.send(postContent);

註:
1.在ASP.NET AJAX裡,所有WebMethod只接受HTTP POST verb,更進一步還要求檢核Content-Type: application/json標頭,做到雙重保險。
2.可使用Request.HttpMethod == "POST"的檢查限阻止GET請求

參考資料:
http://www.dotblogs.com.tw/marcus116/archive/2011/05/29/26428.aspx
http://blog.toright.com/archives/1203
W3C Http Code 表示意義
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Http Method 各類定義
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods
http://www.yongfa365.com/Item/Ajax-GET-POST.html
http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/04/16/dont-use-get-ajax.aspx

{Knowledge} Page Life Cycle

八個階段:
  Page發出Request
  初始化
  載入網頁
  驗証
  事件
  顯示頁面
  缷載

初始化(Page Initialization)階段會觸發--Page物件的PreInit、Init、InitComplete事件
載入網頁(Loading)階段會觸發--ProLoadLoadLoadComplete
事件(Event) 階段會觸發--有PostBack的控制項事件
顯示頁面(Render) 階段會觸發--PreRenderRender
缷載(Unload) 階段會觸發--Unload


圖出處:http://msdn.microsoft.com/en-us/library/ms972976.aspx

每一事件的大致功能
Preinit
1.可檢查IsPostBack屬性判斷是否第一次處理網頁
2.建立動態控制項、建立MasterPage;其動態控制項其值,因ViewState未還原,值之後可被覆寫

ProLoad
1.已將ViewState 載入,可使用Control的屬性

Load
1.遞迴每個子控制項執行相同的動作,設定Control屬性,也可建立與DB的連接

有PostBack的控制項事件
1.驗證(Validation)資料有沒有問題(使用者輸入資料、或資料來源的資料)--避免垃圾資料
2.Control Event對應
3.也可重新Bind資料

Load Complete
1.也可在此重新整頁面資料

PreRender
1.覆寫控制項屬性

SaveStateComplete
1.這是頁面呈現給要求瀏覽器之前的最後一個引發事件--msdn
2.此時ViewState的資料已被觸發此事件前儲存

Render
繪圖畫面


參考資料:
http://www.dotblogs.com.tw/hatelove/archive/2009/12/18/pagelifecycle.aspx
http://msdn.microsoft.com/zh-tw/library/ms178472.aspx
http://www.dotblogs.com.tw/marcus116/archive/2011/05/24/25923.aspx
http://msdn.microsoft.com/en-us/library/ms972976.aspx

{SQL} 產生DDL語法 建立Table







產生一個DDL語法,使可建立、執行建立Table等;建立方式如圖

2012年7月18日 星期三

{Note}ViewState架構

正常Web 應用程式沒有狀態,也就是說,當User key in的資料,傳到伺服器,伺服器回傳後,User key in的資料就不會被保存,因為當HTTP發出一個Request時,會建立Web網頁類別個體,而每一個Resuest 都是一個新的個體,所以不會被保存;.net針對目前的.net架構設計一個狀態管理機制,將User key in的資料,保存在編碼後的ViewState中,以保存Web Control上的值

Clinet State分類:
View State,Control State,Hidden Fields,Cookie,Query Strings
Server State分類:
Application State,Session State,Profile Properties


ViewState:預設是啟用的,當網頁Post back 時,即為轉為一個Hidden 類型(<input type=hidden>);而他會將畫面上所有控制項的值都存成View State,如是 Gridview等類型的值對網頁來說是無效的,卻仍
然會被轉為ViewState,造成ViewState很龐大,傳輸網頁相對較慢
關閉方式:
Control的ViewState
<asp:Gridview id="abc" runat="server" EnableViewState="false" />

Page的ViewState
<%@ Page EnableViewState="false" %>

WebConfig的ViewState
<pages enableViewState="false" />

參考資料:
http://www.dotblogs.com.tw/marcus116/archive/2011/05/29/26428.aspx

2012年7月12日 星期四

{C#} 文件下載-Response.AddHeader

Response.AddHeader("Content-Disposition", attachment;filename全名(含附檔));


參考資料:
中文檔名問題
1.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5");
http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/09/05/kb-open-and-download-file-in-chinese-filename.aspx

2.Server.UrlEncode(fileName)
http://blog.miniasp.com/post/2008/04/20/ASPNET-Force-Download-File-and-deal-with-Chinese-Filename-correctly.aspx

http://www.pctartarus.com/bbs/thread-982-1-1.html

Response 物件解說
http://www.study-area.org/coobila/tutorial_336.html

使用方式完整版
http://stackoverflow.com/questions/3889521/response-addheadercontent-disposition-not-opening-file-in-ie6

{工具} NPOI Excel 讀寫工具(2013 更新,可支援到2007版本)

2013 更新:NPOI 2.0 可支援2003~2007 Excel版本

差異:

//2007
XSSFWorkbook workbook = new XSSFWorkbook(FileUpload1.FileContent);
//2003
HSSFWorkbook workbook = new HSSFWorkbook(FileUpload1.FileContent);

//辯別是2007還是2003
IWorkbook workbook = WorkbookFactory.Create(FileUpload1.FileContent);


匯入Example:

protected void Button1_Click(object sender, EventArgs e)
        {
            //NPOI.DLL:NPOI 核心函式庫。
            //NPOI.DDF.DLL:NPOI 繪圖區讀寫函式庫。
            //NPOI.HPSF.DLL:NPOI 文件摘要資訊讀寫函式庫。
            //NPOI.HSSF.DLL:NPOI Excel BIFF 檔案讀寫函式庫。
            //NPOI.Util.DLL:NPOI 工具函式庫。
            //NPOI.POIFS.DLL:NPOI OLE 格式存取函式庫。
            //ICSharpCode.SharpZipLib.DLL:檔案壓縮函式庫。
            if(FileUpload1.HasFile)
            {
                //辯別是2007還是2003
                IWorkbook workbook = WorkbookFactory.Create(FileUpload1.FileContent);
                
                ////2007
                //XSSFWorkbook workbook = new XSSFWorkbook(FileUpload1.FileContent);
                ////2003
                //HSSFWorkbook workbook = new HSSFWorkbook(FileUpload1.FileContent);


                int sheetCount= workbook.NumberOfSheets;
                DataSet ds=new DataSet();
                //讀每一個Sheet
                for (int i = 0; i < sheetCount; i++)
                {
                    var  hs = workbook.GetSheetAt(i);
                    DataTable dt = new DataTable();
                    //第一行是標題
                    var  hr =  hs.GetRow(0);
                    if (hr == null) continue;
                    int cellCount = hr.LastCellNum;
                    for (int j = hs.FirstRowNum; j < cellCount; j++)
                    {
                        DataColumn column=new DataColumn(hr.GetCell(j).StringCellValue);
                        dt.Columns.Add(column);
                    }

                    int rowCount = hs.LastRowNum;
                    
                    bool flag = false;
                    //略過第0列
                    for (int j = (hs.FirstRowNum+1); j < rowCount; j++)
                    {
                        var  hssfRow = hs.GetRow(j);
                        if (hssfRow == null) continue;
                        DataRow dr = dt.NewRow();
                        flag = false;
                        for (int k = hssfRow.FirstCellNum; k < cellCount; k++)
                        {
                            if (hssfRow.GetCell(k) != null)
                            {
                                switch (hssfRow.GetCell(k).CellType)
                                {
                                    case CellType.NUMERIC:
                                        {
                                            if(!flag)
                                                flag = CheckValue(hssfRow.GetCell(k).ToString());
                                            dr[k] = hssfRow.GetCell(k).NumericCellValue;
                                            break;
                                        }
                                    case CellType.STRING:
                                        {
                                            if(!flag)
                                                flag = CheckValue(hssfRow.GetCell(k).StringCellValue);
                                            dr[k] = hssfRow.GetCell(k).StringCellValue;
                                            break;
                                        }
                                    default:
                                        {
                                            if(!flag)
                                                flag = CheckValue(hssfRow.GetCell(k).ToString());
                                            dr[k] = hssfRow.GetCell(k).ToString();
                                            break;
                                        }
                                }
                            }
                        }

                        if (flag)
                            dt.Rows.Add(dr);
                    }
                    //讀完一個Sheet關閉一個Sheet
                    hs = null;

                    ds.Tables.Add(dt);
                }
                //全部Sheet讀完關閉Excel
                workbook = null;
                GridView1.DataSource = ds.Tables[0];
                GridView1.DataBind();

                GridView2.DataSource = ds.Tables[1];
                GridView2.DataBind();

            }
        }


匯出Excel格式設定範例:
http://wenku.baidu.com/view/035c53d0c1c708a1284a4444.html

EEPlus vs NPOI
http://www.dotblogs.com.tw/kkman021/archive/2012/04/21/71692.aspx


--------------------------------我是分隔線---------------------------------------
相關文章:
官網
http://npoi.codeplex.com/documentation

轉出Excel
http://dotnetmis91.blogspot.tw/2011/02/npoi-gridview.html

NPOI Library--中文解說
http://msdn.microsoft.com/zh-tw/ee818993.aspx

與EPPlus比較
http://wupinny.blogspot.tw/2011/07/aspnet-export-excel-with-npoi-and.html
http://www.dotblogs.com.tw/kkman021/archive/2012/04/21/71692.aspx

詳細應用
http://tonyqus.sinaapp.com/

合併多個Excel
http://www.dotblogs.com.tw/hunterpo/archive/2010/02/25/13759.aspx

NPOI匯出圖表
http://dotnetmis91.blogspot.tw/2010/03/chart-control-excel-npoi.html
http://www.cnblogs.com/atao/archive/2009/09/28/1576044.html

{C#}在C#中調整Button 字體顏色

button4.ForeColor = System.Drawing.Color.Red;

{HTML}GridView BoundField、TemplateField 千分位

在BoundField之下
DataFormatString="{0:N0}"

在TemplateField之下
'<%# string.Format("{0:N0}",Eval("Qty")) %>'

'<%# Eval("Qty","{0:N0}") %>'

以上設定僅千分位,不會有小數點之設定


參考資料:
http://kuanglian2000.wordpress.com/2009/10/23/templatefield-add-number-format/
http://topic.csdn.net/u/20071130/11/3C3D2D26-5D0D-4DCB-BF3A-F00438209A6C.html

{工具} HttpWatch Basic 測試網頁載入速度

下載處:(支援IE與Firfox)
http://www.azofreeware.com/2008/11/httpwatch-basic-edition-6017.html

使用與安裝方式:
http://steachs.com/archives/1450


2012年7月10日 星期二

{JavaScript} Json格式日期在JS中比對

當遇到Json格式轉出的DataTime
要在JavaScript裡做日期對比的function
則需先轉為new Date(),再去比對



function ConvertJsonDateAndCompare(JsondateString) {
            var date = new Date(parseInt(dateString .replace("/Date(", "").replace(")/", ""), 10));
            if(Date.parse(date)==Date.parse(controlDateString))
                            {
                                alert( '日期相同');
                            }

        }


如是一般JS字串
則:Date.parse(controlDateString)


參考資料:
http://www.jb51.net/article/24215.htm
http://uiop7890.pixnet.net/blog/post/24839177-%5B%E5%8E%9F%E5%89%B5%5D-javascript-%E7%A8%8B%E5%BC%8F%E7%AF%84%E4%BE%8B-%E4%B9%8B-%E6%97%A5%E6%9C%9F%E6%AF%94%E8%BC%83

2012年7月9日 星期一

{JavaScript} 動態新增刪除select頁籤之Option項目


                 var appendStr = "";
                 for (i in dataArr) {
                     if (dataArr[i].aaa== selectValue) {
                         appendStr += "<option value='" + dataArr[i].bb+ "'>" + dataArr[i].bb+ "</option>";
                     }
                 }
                 //先刪除所有Option 再增加Option
                 if(appendStr!="")
                 {
                    $('#ddl').find("option").remove().end().append(appendStr);
                 }

參考資料:
http://stackoverflow.com/questions/47824/using-core-jquery-how-do-you-remove-all-the-options-of-a-select-box-then-add-o

{JavaScript} 結束一for迴圈

當要結束一For 迴圈
 for(i in a.count)
{
    break;
}
alert('abc');
---->仍會跳出abc的彈跳視窗



 for(i in a.count)
{
    return false;
}
alert('abc');
-->不會跳出abc的彈跳視窗,即結束此Function


參考資料:http://topic.csdn.net/t/20050223/15/3800857.html

2012年7月8日 星期日

{SQL} 本機還原資料庫執行步驟



















紅框處新增查詢頁面,輸入下列sql
路徑轉為自已bak相關路徑

restore DATABASE KTMS
from disk='D:\KTMS.bak'  
with
move 'KTMS' to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\KTMS.mdf',
move 'KTMS_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\KTMS_log.ldf'
,NoRecovery
,Replace
go



重覆一次還回資料庫動作,即可完成

參考資訊:http://blog.yam.com/iamshiao/article/18601917



2012年7月6日 星期五

{Note} 筆記,無自行整理,只放上連結;更新時間2014/09/29

//Excel Upload (6/10)
http://lhp-self-learning.blogspot.tw/2011/02/c-upload-excel-to-oracle.html

//Dictionary To DataSet  & DataSet To Dictionary (6/13)
http://stackoverflow.com/questions/4181986/extension-method-to-get-list-of-dictionaries-as-dataset

//二個Usercontrol傳值(6/28)
http://king971119.blogspot.tw/2009/06/c-ascx-usercontrol.html

//ViewState 範例 (6/28)
http://www.dotblogs.com.tw/darren.net/archive/2008/12/19/6447.aspx

//新技術:Entity Framework和NHibernate (7/06)
linq與Enity framwork比較:http://blog.sina.com.tw/dotnet/article.php?pbgid=4907&entryid=581590

//Ado.not entity Framework (7/06)
http://www.cnblogs.com/tracy/archive/2010/08/12/1798284.html

//Server 端存取Excel工具 (7/06)
http://msdn.microsoft.com/zh-tw/ee818993.aspx

//EEplus元件 (7/06)
http://blog.darkthread.net/post-2012-05-12-epplus.aspx

//SQL ROW_NUMBER()    RANK() 資料排序 (7/06)
http://www.dotblogs.com.tw/topcat/archive/2009/08/06/9906.aspx
http://www.flag.com.tw/book/cento-5105.asp?bokno=F6221&id=119

//GridView TableSection屬性 (7/06)
http://blog.roodo.com/cat1020/archives/10978111.html

//IQueryable和IEnumerable (9/17)
http://www.cnblogs.com/hiteddy/archive/2011/10/01/Difference_among_IQueryable_IEnumeralb_IList_in_Entity_Framework.html

http://www.dotblogs.com.tw/regionbbs/archive/2012/01/12/linq.deferred.execution.aspx

//.Net code相關 功用大全(9/17)
http://catchtest.pixnet.net/blog/post/28219055-asp.net-%E4%BD%BF%E7%94%A8%E7%AD%86%E8%A8%98

//CSS3試做(9/17)
http://css3button.net/

//VS快速鍵大全(9/17)
http://vmiv.blogspot.tw/2009/02/visual-studio2.html
http://www.cnblogs.com/dragonstreak_1/archive/2011/10/07/2200296.html

//SQL 四大語言( DDL、DML、DCL、TCL) (10/1)
http://www.cnblogs.com/henryhappier/archive/2010/07/05/1771295.html

//out、ref、params 用法 (10/1)
http://www.cnblogs.com/hunts/archive/2007/01/13/619620.html

//Autocomplete 參數說明(10/18)
http://adisonwu.blogspot.tw/2010/08/jquery-autocomplete-plugin.html
http://m.oschina.net/blog/13455

//Read Exce 元件-ClosedXml-只支援2007 excel 以上版本(3/4)
http://blog.darkthread.net/post-2012-12-28-closedxml.aspx

//Autocomplete Twitter版本(3/12)
https://github.com/twitter/typeahead.js

//.net framework 記錄Log -N Log(5/3)
http://www.dotblogs.com.tw/wadehuang36/archive/2012/07/11/nlog-exception.aspx

//MySQL / SQL Server / Oracle / MS Access 資訊查詢(5/3)
http://webdesign.kerthis.com/sql/sql_primary_key

//office automation (server 自動化啟動office)(5/3)
http://support.microsoft.com/kb/257757/zh-tw

Excel匯出 使用OLEDB 方式範例(5/5)
http://www.dotblogs.com.tw/dotjum/archive/2008/06/26/4376.aspx

Excel 匯出 三種常見方式介紹(OLEDB、Excel.dll、XML)(5/5)
http://pcdou.pixnet.net/blog/post/24075850-.net-excel%E5%8C%AF%E5%85%A5-(c%23)

//自寫Jquery 編輯小工具 (5/13)
http://kevintsengtw.blogspot.tw/2012/02/jqueryjquerypad.html#.UZBdn7XX_T4

//動態更新資料(使用Ajax)(5/21)
http://dotnetmis91.blogspot.tw/2010/03/gridview.html

IIS 上啟用後,出現「剖析器錯誤訊息: 無法辨認的屬性 'targetFramework'。請注意,屬性名稱必須區分大小寫。
<compilation debug="true" targetFramework="4.0" />」(9/29)
http://blog.xuite.net/chengvanting/Life/62792888-IIS+7.5+%E6%89%BE%E4%B8%8D%E5%88%B0.Net+Framework+4.0

2012年7月4日 星期三

{Html} 取出純文字html原碼轉Html語法Show出


在Html中,將純文字Html原碼,轉為Html語法Show於Web上方法:
<%=string.IsNullOrWhiteSpace(原碼內容) ? "" :  原碼內容 .Replace("\\r\\n\n\n", "<br/>").Replace("\\r\\n", "<br/>")%>

2012年7月2日 星期一

{SQL& Linq} 取得某群組資料中日期最大

條件:
在一Table中有多個群組類別資料,取每一類別中日期最大的

sql:

select * from (
select b.* ,ROW_NUMBER() over (partition by b.商品類別 order by b.價格生效日 desc)as Sort 
from (select * from 商品類別價格Table where DATEDIFF(DAYOFYEAR, 價格生效日 ,GETDATE())>0) b)a
where a.Sort='1'

解說:
從上一SQL可發現同一種商品類別會有多個價格生效日,上一列子要取出生效日在今天(不含今天)以前日期最接近今天的一筆

SQL轉成Linq:

 var query=context.商品類別價格Table.Where(s=>System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(s.價格生效日,DateTime.Now)>0).ToList().OrderByDescending(s => s.價格生效日).GroupBy(s => 商品類別).Select(
                    b => new {b, cout = b.Count()}).SelectMany(
                        c =>
                        c.b.Select(d => d).Zip(Enumerable.Range(1, c.cout),
                                               (j, i) => new  { j.PriceId, j.商品類別, j.價格生效日, Sort = i })).Where(s => s.Sort == 1).ToList();


參考資料:
http://pastebin.com/7SCG76uW

Zip用法...
http://msdn.microsoft.com/zh-tw/library/dd267698.aspx

{Linq} Group By 多個欄位

var query=from a in table
group a by new { a.file1,a.file2} into g
select g;

資料來源:http://bibby.be/2008/07/linqgroup.html

{C#}ViewState使用


<td >
    <%=ViewState["UpdateBy"] %>
</td>
ViewState 替代 Label Web Control
使解析時,不被解析為Input元件,改善網頁效率,卻可保存內文方式

C#--給值
ViewState["UpdateBy"] = UpdateBy;


C#--取值
var abcString=ViewState["UpdateBy"] ;

js--取值
var  temp= '<%:ViewState["UpdateBy"] %>';        
or
var  temp=$('<%= ViewState["dt_Year"]  %>').selector;

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

包一大包資料至ViewStatus

    <% var detail = ViewState["detail"] as WebServiceName.TableName; %>
    <% if (detail == null)
           return; %>


<td >
    <%:detail.Column1 %>
</td>



參考資料:http://yan3776.pixnet.net/blog/post/11094909-viewstate%E7%9A%84%E9%81%8B%E7%94%A8

{C#} Drop Down List 增加預設"請選擇"


當asp.net的web control使用Drop Down List時,Binding資料後,在預設要為空白選項或「請選擇」選項時,設定方式為下
1.設立屬性AppendDataBoundItems為True
2.增加一個ListItem為請選擇或空白
<asp:DropDownList ID="ddlList" runat="server" AutoPostBack="true" AppendDataBoundItems="true" >
<asp:ListItem ></asp:ListItem>        
</asp:DropDownList>


在Post back後,asp.net會自動檢查使用者是否選到所另增加的資料,無需另外判斷

{C#} string.Empty與""的差別

使用String.Empty時,不會建立任何物件
如是使用var stringTest="",則會一開始就建立好物件
對程式效率來說,String.Empty會較好

資料來源:http://www.wretch.cc/blog/wthomasu/9649447

{LInq} Linq Pad 工具使用說明連結


Linq Pad 工具使用教學:
http://www.haogongju.net/art/134418

{Linq} SqlMethods類別--日期差異Linq To Sql運用


在linq中執行日期相差之sql 語法
可使用SqlMethods類別
using System.Data.Linq.SqlClient.SqlMethods

範例:
假設要取今天以前的資料,不包含今天
SQL語法:
SELECT * FROM abcTable WHERE datediff (DAYOFYEAR,time,GETDATE())>0

Linq語法:
 context. abcTable. Where(s=>System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(s.time,DateTime.Now)>0).ToList();



參考資料:http://msdn.microsoft.com/zh-tw/library/system.data.linq.sqlclient.sqlmethods.aspx
http://www.dotblogs.com.tw/dc690216/archive/2009/09/13/10602.aspx
http://www.cnblogs.com/jamin/archive/2008/09/17/1292562.html

sql之msdn
http://msdn.microsoft.com/zh-tw/library/ms189794.aspx


{C#} ArrayList 一次性增加多筆


在已存在的ArrayList中,一次性增加多筆ArrayList
前提:相同的型態格式下
ArrayList.AddRange(相同型態之ArrayList)


參考資料: