顯示具有 ASP NET 3.5 教學 標籤的文章。 顯示所有文章
顯示具有 ASP NET 3.5 教學 標籤的文章。 顯示所有文章

2012年3月18日 星期日

【ASP.NET 3.5教學】 Repeater_ItemDataBound 設定 DropDownList SelectedValue 值

Repeater 在 ItemDataBound 設定 DropDownList  SelectedValue 值

說明:
假設我用Repeater 跑了15筆資料

在設定Repeater 想放 DropDownList   再去撈 Repeater 資料 ,好讓 SelectedValue 去對應到值,顯示正確的SelectedValue  顯示資料

【有兩種做法】

(第一種):
Repeater 在 ItemDataBound 底下寫


if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
【DropDownList ID名稱】.SelectedValue =
Convert.ToString(DataBinder.Eval(e.Item.DataItem, "XXXX"));
}

(1) = XXXX 裡面要填寫 Repeater  的 Eval 來源資料(欄位名稱):欄位名稱
(2) = 【DropDownList ID名稱】 要填寫  DropDownList 控制項ID名稱

參考連結:
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx
http://www.dotblogs.com.tw/dyco/archive/2009/06/15/8830.aspx


(第二種):
Repeater 在 ItemDataBound 底下寫 

把 Select * from table 撈到DataTable 裡面

然後 SelectedValue  指項 DataTable
【 DropDownList  控制項名稱】.SelectedValue = dt.Rows[0][" XXXX "].ToString();


如果我的話,會選擇 【第一種】做法,就不用再暫存一個DataTable

2012年3月6日 星期二

【ASP NET 3.5 教學】System.attribute 類別定義


attribute, 用來為 class, method, parameters 貼上標籤,以便後續的應用.
所有的 attribute class 都要繼承 System.Attribute
1. class Class1Attribute: System.Attribute  
2. {  
3. }  
使用的時候可以省略 Attribute
1.  [Class1]  
2. class Class2  
3. {  
4. }  
打全名當然也是可以
1.  [Class1Attribute]  
2. class Class2  
3. {  
4. }  

ü   System.Reflection
包含的型別可透過檢查 Managed 程式碼中組件、模組、成員、參數和其他實體 (Entity) 的中繼資料 (Metadata),擷取這些項目的相關資訊。 您也可以使用這些型別管理已載入之型別的執行個體 (Instance),例如連結事件或叫用 (Invoke) 方法。
MethodInfo 類別
探索方法的屬性 (Attribute) 並提供方法中繼資料 (Metadata) 的存取。
MemberInfo.GetCustomAttributes 方法 (Type, Boolean)
MemberInfo.GetCustomAttributes (Type, Boolean)
在衍生類別中覆寫時,傳回由 Type 所識別的自訂屬性陣列。

ü   System.Attribut
代表自訂屬性的基底類別。
AttributeUsageAttribute.AllowMultiple 屬性
取得或設定布林值 (Boolean),指出所指定屬性的幾個執行個體能否指定給單一程式項目

[MSDN]System.Reflection 命名空間:

[MSDN]System.Attribute命名空間:
自訂屬性網址:

相關參考網址:

LINQ
let 的用法: let 可用來當 LINQ 中暫存的變數

2011年11月24日 星期四

C# SqlTransaction 交易方式

SqlConnection conn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBconnStr"].ToString());
2 conn.Open();
3 SqlCommand command = new SqlCommand();
4 SqlTransaction transaction;
5 //Start Transaction
6 transaction = conn.BeginTransaction();
7 command.Connection = conn;
8 command.Transaction = transaction;
9 try
10 {
11    for (int i = 0; i < 5; i++)
12    {
13       command.CommandText = "insert into demouser values(newid(),'TestBatch')";
14       command.ExecuteNonQuery();
15    }
16    //Commit
17    transaction.Commit();
18 }
19 catch (Exception ex)
20 {
21   //有問題即Rollback
22     transaction.Rollback();
23 }
24 command.Connection.Close();

2011年11月6日 星期日

Constraints 約束條件 (PK.FK.UC)

NOT NULL 設定該欄立不可含Null 值
UNIQUE 設定一個或多個欄位組合,資料內容需唯一不可重覆
PRIMARY KEY 設定資料表格不可重覆、空白或為Null的主鍵值
FOREIGN KEY 設定該欄位值的存在必須關連並參照指定資料表格的欄位值
CHECK 設定需符合所列示的條件值

注意事項
所有的Constraints資料均會存放在系統資料表格(Data Dictionary)中。建立Constraint時若賦予有意義的名稱,會較易查核Constraint的資料。Constraint標準的命名方式,應加入物件名稱。若未定名,則Oracle會自動以SYS_Cn的唯一名稱為之命名。USER_CONSTRAINTS可查核所設定的 Constraintion資料。

設立Constraints
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],...
[table_constraint][,...]);
Schema:與資料表格擁有者相同的名稱。
Table:設定資料表格名稱。
DEFAULT expr:為欄位設定預設值。
Column:設定資料表格內的欄位名稱。
Datatype:設定欄位資料型態及長度。
Column_constraint:設定欄位層級的約束條件,以維護資料的完整性。
Table_constraint:設定資料表格層級的約束條件,以維護資料的完整性。
ex:
CREATE TABLE emp(
empno NUMBER(4),
ename VARCHAR2(10),...
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));

建立 Constraints 的層級
欄位層級的 constraint
column [CONSTRAINT constraint_name] constraint_type,
資料表格層級的 constraint
column,...[CONSTRAINT constraint_name] constraint_type(column, ...),
Column 單一欄位的參照設定,可定義任何型態的Constraint。
Table 一個或多個欄位的參照設定,可定義除了NOT NULL以外的,任何型態Constraint。

NOT NULL Constraint的用途
新增資料時,Oracle會對不給值的欄位,預設填入Null值。若確保該欄位值不可為Null值,需於該欄位設定NOT NULL的Constraint條件,當資料異動時,即可自動執行資料內容檢核的動作。
ex:
..deptno NUMBER(7,2)
CONSTRAINT emp_deptno_nn NOT NULL…..

使用 UNIQUE Constraint
為一個或組合性的欄位,設立UNIQUE Constraints可確保一個或組合性的欄位值的資料唯一。為一個欄立設立UNIQUE Constraint時,可接受Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE(dname));
設立UNIQUE Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。

PRIMARY KEYConstraint
每一個資料表格,僅能擁有一個PRIMARY KEY的Constraints,建立主鍵值。PRIMARY KEY可以是一個欄位或組合式欄位,其欄位值必須唯一且不可含Null值。
ex:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname),
CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
設立PRIMARY KEY Constraint時,Oracle 會隱含式自動為所設立的欄位,建置Unique Index的索引檔。

FOREIGN KEYConstraint
FOREIGN KEY是維護資料庫資料完整性的Constraint。以FOREIGN KEY偵測一個或組合式欄位,與自有的或其他資料表格的PRIMARY KEY或UNIQUE Constraint欄位建立資料關連。如主檔與明細檔(父子檔)間的關連。單一的 FOREIGN KEY欄位,可接受Null值。設有FOREIGN KEY Constraint條件的欄位值(子檔),必須參照並符合被參照檔(父檔),已存在的欄位值。
ex:
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno));
FOREIGN KEY要設定前,應先確定所要參照的PRIMARY KEY 或 UNIQUE 已事先設置完成,可供參照。

FOREIGN KEY 的保留字
FOREIGN KEY定義於子檔中,且子檔含有可參照父檔的關連欄位。
FOREIGN KEY的設定,由下列保留字所組成:
FOREIGN KEY:於子檔設定可關連參照的欄位。
REFERENCES:用以指定所參照的資料表格名稱及欄位名稱。
ON DELETE CASCADE:設定當父檔的資料刪除時,子檔中相關連的明細資料,亦會一併被刪除。

若未設定ON DELETE CASCADE,在刪除父檔的資料時,若子檔仍有相關連的明細資料存在,會產生錯誤訊息。

CHECK Constraint
若以CHECK Constraint為欄位設定列示值條件,資料表格中的每一筆資料列,均需符合所列示的限制條件。一個欄位,可設定多個CHECK Constraint列示條件,衹要邏輯條件不衝突,CHECK Constraint 的個數不限。CHECK Constraint,可設立於資料表格或欄位層級。
ex:
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
每一資料列的資料內容,均需滿足檢核條件
不可做為檢核條件的表述句:
參照 CURRVAL, NEXTVAL, LEVEL, 及 ROWNUM 等虛擬欄位名稱呼叫 SYSDATE, UID, USER, 及 USERENV 等函數使用
以其它資料列的資料內容做為檢核條件

新增Constraints
於資料表格建置完成後,可使用ALTER TABLE..ADD方式新增Constraint。
Table:設定資料表格名稱。
Constraint:Constraint的保留字及所指定的Constraint名稱。
Type:設定所要新增的Constraint 種類。
Column:設定Constraint運作的欄位名稱。
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
Constraint可以新增、刪除、啟動或關閉,但不能更改其架構。
欲在已建置完成的資料表格,新增NOT NULL Constraint時,需於 ALTER TABLE 指令中,使用 MODIFY子句,否則無法設立。新增NOT NULL Constraint 時,若資料表格中已有資料,Constraint會進行檢核,若已存在有Null值,設立Constraint時會產生錯誤訊息。
ex:
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY(mgr) REFERENCES emp(empno);

刪除Constraints
刪除Constraint前,可先查核系統資料表格中的USER_CONSTRAINTS及USER_CONS_COLUMNS資料內容。確定需求後,再進行刪除作業。
ALTER TABLE table
DROP PRIMARY KEY | UNIQUE (column) |
CONSTRAINT constraint [CASCADE];

DROP指令,若使用CASCADE子句,可將有參照關連的Constraint一併刪除。

關閉Constraints
對於不想刪除再重建的Constraint,可使用ALTER TABLE..DISABLE指令,暫時性關閉Constraint的檢核作用。
ALTER TABLE emp
DISABLE CONSTRAINT
emp_empno_pk CASCADE;
DISABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。
CASCADE子句,可同時關閉有參照關連的Constraint作用。

啟動Constraints
對於被設定為DISABLE的Constraint,可使用ALTER TABLE…..ENABLE指令,重新啟動Constraint的檢核作用。
ALTER TABLE table
ENABLE CONSTRAINT constraint;
啟動Constraint作用時,會對資料表格中的所有資料列,檢核欄位值的合理性,故已存在的資料內容,需符合Constraint 的檢核條件。
啟動UNIQUE或PRIMARY KEY的Constraint 時,Oralce會自動為所設定的欄位,建置一個Unique Index索引檔。
ENABLE子句,可使用於CREATE TABLE 及ALTER TABLE語法中。

查核Constraints資訊
資料表格建置完成後,若以DESC指令查驗資料表格的檔案結構,針對Constraint,衹能查看是否有NOT NULL的Constraint記錄。若要查看資料表格上的所有Constraint設定,可查核USER_CONSTRAINTS系統資料表格檔。若 Constraint設立之初,使用者未設定Constraint名稱,所查看到的會是系統所配置的系統名稱。

SELECT constraint_name,constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMP';

USER_CONSTRAINT的Constraint Type欄位值定義:
P:Primary key。
R:Foreign key。
U:Unique。
C:Check 或 Not Null。

查核USER_CONS_COLUMNS
USER_CONS_COLUMNS系統資料表格,可查核Constraint所對應的欄位名稱。尤其是查核系統自動配置的系統名稱(SYS_Cn)所對應的欄位,非常有效。常與USER_CONSTRAINTS的查核,搭配使用。

ex:
SELECT constraint_name,column_name
FROM user_cons_columns
WHERE table_name = 'EMP';

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月21日 星期日

[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位

2011年8月11日 星期四

Data 多少筆資料

dt.Rows.Count

日期涵數使用

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" />