2011年8月7日 星期日

[ASP.NET] 使用 acsx 與 aspx - WebUserControl


簡單的說「就是把元件放在 ascx 上,然後在 aspx 裡使用」。今天舉的例子就是在 ascx 裡放入 DataGrid 然後在 aspx 裡呼叫,並以 findcontrol 方式來連結設定相關的屬性。
相關的動作
  1. 增加 WebUserControl (ascx) 檔案
  2. 在 aspx 裡註冊使用 ascx 
  3. 利用 findcontrol 對應 ascx 裡的元件
##增加 WebUserControl (ascx) 檔案 ##
增加「Web 使用者控制項」

然後在 WebuserControl 裡放入你要使用的元件,例如我放入的是「DataGrid」所以增加下面這行程式碼
gd" runat="server">

## 在 aspx 裡註冊使用 ascx ##
-1. 在 aspx 前頭宣告部份增加 
<%@ Register TagPrefix="wuc" TagName="wuc1" Src="~/WebUserControl1.ascx" %>
當然載入的檔名、TagName 都可以自行設定囉~
-2. 在 aspx 的 body 裡,在你想放元件的地方,插入下面這行
wuc1" runat="server" />
## 利用 findcontrol 對應 ascx 裡的元件 ##
元件是放在 ascx 裡,所以在 apsx 裡要應用就必須先用 findcontrol 把他對應起來,底下簡單的例子,是將 findcontrol 的動作寫在 page_load ,然後指定 SqlDataSource 接著 bind 起來
protected void Page_Load(object sender, EventArgs e)
{
   DataGrid gd1 = new DataGrid();
   gd1 = (DataGrid)wuc1.FindControl("gd");
   gd1.DataSource = SqlDataSource1;
   gd1.DataBind ();
}

然後執行就可以了,
-*_*- 但這樣做的目的為何呢?
我想大家都知道 Master Page 可以用來設計通用的版面樣式,只要修改 Master page 底下所有的內容表單都會連動變更,這樣可以省時省力的修改頁面的樣式
相同的,如果你許多頁面都含有 DataGrid 或 Gridview 之類的元件,這些元件會有搭配的顏色及對應的樣式,如果主版面色系一改,那是不是得將所有的 DG、GV 都一起就做修改
萬一頁面有 500頁,改到天黑都來不及下班唷....
那該怎麼辦?那就是將元件放到 ascx 裡並設定樣式,只要修改 ascx 裡樣式,所有引用的頁面都會一起就做修改,快又省事~
即使有多種的樣式,你都一樣可以放在 ascx 裡,然後再各別給名稱就可以了!
~End

沒有留言:

張貼留言