2011年8月25日 星期四

DataTable 使用方式 讀 / 寫 /欄位 / 表格名稱

請在 aspx 建立那個GridView
一個取名gv1
另一個取名gv2

在Load 底下寫入


            DataSet ds = new DataSet();
         
            //建立一個tableEMP ,表格取名為Empoyees 為了dataSet讀取 使用
            DataTable tableEMP = new DataTable("Empoyees");
            tableEMP.Columns.Add("ID",typeof(int));
            tableEMP.Columns.Add("Name", typeof(string));

            //DataRow 是建立資料欄位 row 欄位名稱
            DataRow row = tableEMP.NewRow();
            row["ID"] = 1;
            row["Name"] = "Joe";

            //獎row 把值,對應tableEMP.rows裡面
            tableEMP.Rows.Add(row);

            //DataTable 加入 dataSet裡面
            ds.Tables.Add(tableEMP);


            //table 讀取方式 rows 集合物件第0第0欄位
            Response.Write(tableEMP.Rows[0][0].ToString() + "");
            Response.Write(tableEMP.Rows[0]["ID"].ToString() + "");
         

            //dataSet 讀取方式 Tables表格位置0 或直接找到(表格名稱)  / rows[欄] /  [值]
            Response.Write(ds.Tables["Empoyees"].Rows[0][0].ToString() + "");
            Response.Write(ds.Tables[0].Rows[0][0].ToString() + "");
            Response.Write(ds.Tables[0].Rows[0]["ID"].ToString() + "");

            gv1.DataSource = tableEMP;
            gv1.DataBind();//執行

            //以下寫法也可以:gv2.DataSource = ds.Tables[0];
            gv2.DataSource = ds.Tables["Empoyees"];
            gv2.DataBind();//執行


就能知道怎麼用DataTable

2011年8月22日 星期一

windows 更新dll 開啟

服務:dll 更新
名稱:Automatic Updates

關閉的話windows 就無法更新
開啟的話,會一直啟動run 佔記憶體

2011年8月21日 星期日

jdownloader 亂碼解決方法

亂碼解決方法

1. 軟體設定 > 使用者介面 > 一般 > 外觀 > 樣式 (須重新啟動) > 把"Windows Style" 改為 "Substance Legacy Default"

2. 重新啟動的方法: 
> 看最頂的檔案列 (即最頂的5個亂碼選項) 
> click第1個"口口"("檔案"二字的亂碼)後會看到4個選項 
> click綠色箭頭(即第3個"口口口口"{"重新啟動"四字的亂碼}, mouse移過去會見到"action.restart")

若找不到上面的重新啟動方法, 就right click桌面右下角的"JDownloader"圖示, 按"離開", 然後自行重開"JDownloader"

重新啟動後應可正常顯示

[ASP.NET][VB][C#] 日期格式速查表


ApplyFormatInEditMode 設成True
HtmlENcode 設成False
Gridview 欄位裡的DataformatString 依以下列表設定。ex:日期格式 2008/09/11 要設成 {0:yyyy/MM/dd}
  • 數值資料格式符號
    格式符號  說明 
    C 或 c貨幣之格式,例:25000之"{0:c}"結果為NT$25,000.00。 
    D 或 d十進位之格式,例:25000之"{0:d}"結果為25000。 
    E 或 e科學符號之格式,例:25000之"{0:e}"結果為2.500000e+004。
    F 或 fFixed-point之格式,例:25000之"{0:f}"結果為25000.00。 
    G 或 g一般之格式,例:25000之"{0:g}"結果為25000。 
    N 或 n數字有逗點之格式,例:25000之"{0:n}"結果為25,000.00。 
    P 或 p百分比之格式,例:25000之"{0:p}"結果為2,500,000.00%。 
    X 或 x十六進位之格式,例:25000之"{0:x}"結果為61a8。 
  • 日期格式符號
    格式符號  說明 
    d簡短日期之格式,例:"{0:d}"之結果為1900/1/1。 
    D完整日期之格式,例:"{0:D}"之結果為1900年1月1日。
    f完整日期簡短時間之格式,例:"{0:f}"之結果為1900年1月1日 上午 12:00。
    F完整日期時間之格式,例:"{0:F}"之結果為1900年1月1日 上午 12:00:00。
    g簡短日期簡短時間之格式,例:"{0:g}"之結果為1900/1/1 上午 12:00。 
    G簡短日期完整時間之格式,例:"{0:G}"之結果為1900/1/1 上午 12:00:00。 
    M 或 m月日之格式,例:"{0:m}"之結果為1月1日。 
    R 或 rRFC1123之格式,例:"{0:r}"之結果為Mon, 01 Jan 1900 00:00:00 GMT。 
    sISO 8601區域時間之格式,例:"{0:s}"之結果為1900-01-01T00:00:00。
    t簡短時間之格式,例:"{0:t}"之結果為上午 12:00。
    T完整時間之格式,例:"{0:T}"之結果為上午 12:00:00。
    uISO 8601全球時間之格式,例:"{0:u}"之結果為1900-01-01 00:00:00Z。
    U全球時間之格式,例:"{0:U}"之結果為1899年12月31日 下午 04:00:00。
    Y 或 y年月之格式,例:"{0:y}"之結果為1900年1月。
  • 自訂數值格式的符號
    格式符號  說明 
    0在數字之前或小數點之後補0,例:75.48之"{0:00000.000}"結果為00075.480。
    表示數字,通常搭配其他符號使用。 
    小數點,通常搭配其他符號使用。
    一個逗點等於除1000,兩個逗點等於除1000000,例:100000000之"{0:0,,}"結果為100。
    印出百分比符號,例:75.48之"{0:#%}"結果為7548%。
    E+0,E-0,e+0 或 e-0 以科學符號表示,例:75.48之"{0:#.###e+0}"結果為7.548e+1。

格式:
  • yyyy: 西元年四位
  • MM: 月份
  • dd: 日期
  • t: AM/PM
  • hh: 12小時制
  • HH: 24小時制 
  • mm: 分鐘
  • ss: 秒數
  • f: 精確秒數1位

[ASP.NET][VB][C#] 日期格式速查表


ApplyFormatInEditMode 設成True
HtmlENcode 設成False
Gridview 欄位裡的DataformatString 依以下列表設定。ex:日期格式 2008/09/11 要設成 {0:yyyy/MM/dd}
  • 數值資料格式符號
    格式符號  說明 
    C 或 c貨幣之格式,例:25000之"{0:c}"結果為NT$25,000.00。 
    D 或 d十進位之格式,例:25000之"{0:d}"結果為25000。 
    E 或 e科學符號之格式,例:25000之"{0:e}"結果為2.500000e+004。
    F 或 fFixed-point之格式,例:25000之"{0:f}"結果為25000.00。 
    G 或 g一般之格式,例:25000之"{0:g}"結果為25000。 
    N 或 n數字有逗點之格式,例:25000之"{0:n}"結果為25,000.00。 
    P 或 p百分比之格式,例:25000之"{0:p}"結果為2,500,000.00%。 
    X 或 x十六進位之格式,例:25000之"{0:x}"結果為61a8。 
  • 日期格式符號
    格式符號  說明 
    d簡短日期之格式,例:"{0:d}"之結果為1900/1/1。 
    D完整日期之格式,例:"{0:D}"之結果為1900年1月1日。
    f完整日期簡短時間之格式,例:"{0:f}"之結果為1900年1月1日 上午 12:00。
    F完整日期時間之格式,例:"{0:F}"之結果為1900年1月1日 上午 12:00:00。
    g簡短日期簡短時間之格式,例:"{0:g}"之結果為1900/1/1 上午 12:00。 
    G簡短日期完整時間之格式,例:"{0:G}"之結果為1900/1/1 上午 12:00:00。 
    M 或 m月日之格式,例:"{0:m}"之結果為1月1日。 
    R 或 rRFC1123之格式,例:"{0:r}"之結果為Mon, 01 Jan 1900 00:00:00 GMT。 
    sISO 8601區域時間之格式,例:"{0:s}"之結果為1900-01-01T00:00:00。
    t簡短時間之格式,例:"{0:t}"之結果為上午 12:00。
    T完整時間之格式,例:"{0:T}"之結果為上午 12:00:00。
    uISO 8601全球時間之格式,例:"{0:u}"之結果為1900-01-01 00:00:00Z。
    U全球時間之格式,例:"{0:U}"之結果為1899年12月31日 下午 04:00:00。
    Y 或 y年月之格式,例:"{0:y}"之結果為1900年1月。
  • 自訂數值格式的符號
    格式符號  說明 
    0在數字之前或小數點之後補0,例:75.48之"{0:00000.000}"結果為00075.480。
    表示數字,通常搭配其他符號使用。 
    小數點,通常搭配其他符號使用。
    一個逗點等於除1000,兩個逗點等於除1000000,例:100000000之"{0:0,,}"結果為100。
    印出百分比符號,例:75.48之"{0:#%}"結果為7548%。
    E+0,E-0,e+0 或 e-0 以科學符號表示,例:75.48之"{0:#.###e+0}"結果為7.548e+1。

格式:
  • yyyy: 西元年四位
  • MM: 月份
  • dd: 日期
  • t: AM/PM
  • hh: 12小時制
  • HH: 24小時制 
  • mm: 分鐘
  • ss: 秒數
  • f: 精確秒數1位

IIS7 .NET4.0 新安裝問題,ISAPI及CGI限制

在預設下安裝好IIS7
是沒有開啟.NET4.0的存取的

開啟方法請到IIS7設定下
找到主機的首頁
IIS區塊中
ISAPI及CGI限制
把asp.net 4.0設定成允許即可

MVC說明

M:Model 模型
V:View 檢視
C:Controller控制器

Model:
負責所有與資料有關的任務
定義型別類別負責所有跟資料有相關的工作ADO.NET

View:
所使用者有關的介面如html輸入工作,傳回資訊
取得Controller 回傳資料,做處理格式及放置htm位置
操控 html 控制項
資料取得從Controller 的Action取得,分成兩種,弱型別、強型別
弱型別:從繼承中取得的物件屬OJBect 屬性
Action 傳遞資料有三種:ViewData、TempData、Model傳遞


Controller:
取得model資料
決定應該顯示哪個view
如果發生錯誤時,需選擇適當的view 進行回應
實作方法及介面,指派方法資料及利用方法傳遞資料及檢示給View


2011年8月11日 星期四

Data 多少筆資料

dt.Rows.Count

SQL CASE 的用法

CASE WHEN
欄位= ?
THEN '變成什麼值'
Else '' <--when沒找到的話就空白
End 結尾
as <--搜尋到的資料另建一個匿名欄位
SELECT Order_id, Conten_H1, Conten_H2, Conten_H3, Conten_View, CASE WHEN Conten_View = 1 THEN 'V' ELSE '' END AS Conten_View_show FROM Jsl_Index_Conten ORDER BY Order_id DESC

日期涵數使用

Response.Write(DateTime.Now.ToString("yyyyMMdd_HHmmss") + "
");

GridView、DatailsView、FormView 簡單說明

GridView
說明:提供表格格式,資料來源內容的表格視。每個資料行表示一個資料來源欄位,每個資料列表示一個資料記錄。可以使用樣版來自訂個別資料欄位,但是會被強制使用表格式表示的內容。可自訂項目的細微性是資料表諸存格。雖然使用一些辛苦的作業,可以變更資料表資料列之結構---例如,可以新增或移除儲存格。但是,很難可以再超過這些了。與其它檢視控制項似,在GridView也完全支援雙向資料繫結。

DatailsView
說明:設計用以表示單一紀錄得資料,則控制項會呈現出表格式具固定的版面配置。可以決定要呈現的欄位以及格式,可以使用樣版以自訂個別資料欄位的外觀,但不能變更整體表格基礎的版面配置。控制項支援就地編輯以及插入憘刪除,而具會向下至繫結的資料來源控制項之實際資料存取工作,只要基礎資料來源支援分頁和排序,控制項會讓這些功能透過自己的使用者介面來使用。

FormView
說明:

ListView 介紹

可以分頁、更新、插入及刪除、排序

ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate

樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。

EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。

EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。

GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。

GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值

InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。

ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。

ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。

LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。

SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。

ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法

另外觸發事件跟一般一樣有的功能

自訂按鈕:
Cancel
Delete
Edit
Insert
Page
Slect
Sort
Update

e.commandName取得按鈕名稱  會等於:Update,可以用if來判斷

整體來說:ListView是DataList加強版,透過繫結的資料來源重複,使用者定義的樣版
支援:資料雙向繫結、全完支援資料來源控制項
版面配置樣版定義資料項目周圍的標記,並提供開發人員有關於html標籤和css樣式,完全自由的控制,不提供任何樣式屬性,完完全全靠css樣式類別處理

ListView 介紹

可以分頁、更新、插入及刪除、排序

ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate

樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。

EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。

EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。

GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。

GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值

InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。

ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。

ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。

LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。

SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。

ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法

另外觸發事件跟一般一樣有的功能

2011年8月10日 星期三

虛擬錯誤


微軟的asp.net網頁都會預設進行Request Validation,但若是想規避這樣的內建行為。(建議仍要有其他的方法來防範XSS攻擊)

通常我們可以在.aspx中的Page Tag設定:
 <@Page Language="C#" validateRequest="False" >
或是直接對整個站台設定Web.Config中  下設定全域的


不過,假如你現在在ASP.NET 4.0 的環境下的話,就算進行上述的設定,可能仍會出現驗證失敗的訊息(潛在危險Request.QueryString的錯誤訊息)
因為ASP.NET4.0與2.0版本在請求驗證的定義上已經有所不同:

ASP.NET Request Validation

請求驗證是ASP.NET提供來保護XSS攻擊的一項功能
在先前的ASP.NET(ASP.NET 2.0)網頁,都是預設會進行網頁請求的請求驗證
僅會針對.aspx以及他們的class檔案進行驗證
不過到了ASP.NET 4.0,請求驗證範圍擴大到所有的請求
因為從BeginRequest階段就開始了HttpRequest
因此在這個期間任何的資源要求都會進行請求驗證
而非網頁檔案(.aspx)而已,還包含WebService呼叫以及自訂的http Handlers,都會去驗證http請求的內容
因此在ASP.NET 4.0下,可能在非網頁請求的情況下,仍會發生請求驗證錯誤的訊息
這時為了避免這樣的問題,一樣在Web.Config中 下加入下列語句
這樣就可以讓請求驗證只焦點在.aspx網頁上了。

其他關於ASP.NET 4.0 請求驗證的應用方法:Jimmy的部落格
<httpRuntime requestValidationType="Validate.MyRequestValidator" />

問題:不是有效的虛擬路徑

Server.MapPath()获得的是虚拟web路径的本地物理路径
example: 你有一个website,位置再 C:\website Server.MapPath(".")返回的是 “C:\website” 
你说,这个是虚拟路径嘛? website的虚拟路径应该是 http://localhost/website

2011年8月9日 星期二

驗證身份證字號的正確性


public string IDChk(string vid)
{
    List<string> FirstEng = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "W", "Z", "I", "O" };
    string aa = vid.ToUpper();
    bool chackFirstEnd = false;
    if (aa.Trim().Length == 10)
    {
        byte firstNo = Convert.ToByte(aa.Trim().Substring(1, 1));
        if (firstNo > 2 || firstNo < 1)
        {
            return "2";
        }
        else
        {
            int x;
            for (x = 0; x < FirstEng.Count; x++)
            {
                if (aa.Substring(0, 1) == FirstEng[x])
                {
                    aa = string.Format("{0}{1}", x + 10, aa.Substring(1, 9));
                    chackFirstEnd = true;
                    break;
                }
  
            }
            if (!chackFirstEnd)
                return "3";
  
            int i = 1;
            int ss = int.Parse(aa.Substring(0, 1));
            while (aa.Length > i)
            {
                ss = ss + (int.Parse(aa.Substring(i, 1)) * (10 - i));
                i++;
            }
            aa = ss.ToString();
            if (vid.Substring(9, 1) == "0")
            {
                if (aa.Substring(aa.Length - 1, 1) == "0")
                {
                    return "0";
                }
                else
                {
                    return "4";
                }
            }
            else
            {
                if (vid.Substring(9, 1) == (10 - int.Parse(aa.Substring(aa.Length - 1, 1))).ToString())
                {
  
                    return "0";
                }
                else
                {
                    return "4";
                }
            }
        }
    }
    else
    {
  
        return "1";
    }
}
//回傳1 代表字數不到10  
//回傳2代表第二碼非1,2  
//回傳3 代表首碼有誤  
//回傳4代表檢查碼不對