分享內容(
15人
二、讓 TextBox 控制項可自行維護狀態
接下來擴展 TextBox 控制項,繼承 TextBox 命名為 TBTextBox。新增 FormViewModeState 屬性 (TBFormViewModeState 型別),依 FormView Mode 來設定控制項狀。並覆寫 PreRender 方法,在此方法中呼叫 DoFormViewModeStatus 私有方法,依 FormView 的模式來處理控制項狀態。
三、測試程式
1. 設定控制項相關屬性
我們使用 Northwnd 資料庫的 Products資料表為例,以 GridView+FormView 示範資料「新增/修改/刪除」的操作。在頁面拖曳 SqlDataSource 控制項後,在頁面上的使用 TBGridView 來顯示瀏覽資料。TBGridView 的 FormViewID 設為關連的 TBFormVIew 控制項;另外有使用到 TBCommandField,設定 ShowHeaderNewButton=True,讓命令列具有「新增」鈕。
備註:本文同步發佈於筆者「ASP.NET 魔法學院」部落格
http://www.dotblogs.com.tw/jeff377/archive/2008/10/28/5806.aspx
接下來擴展 TextBox 控制項,繼承 TextBox 命名為 TBTextBox。新增 FormViewModeState 屬性 (TBFormViewModeState 型別),依 FormView Mode 來設定控制項狀。並覆寫 PreRender 方法,在此方法中呼叫 DoFormViewModeStatus 私有方法,依 FormView 的模式來處理控制項狀態。
''' <summary>
''' 文字框控制項。
''' </summary>
< _
Description("文字框控制項。"), _
ToolboxData("<{0}:TBTextBox runat=server></{0}:TBTextBox>") _
> _
Public Class TBTextBox
Inherits TextBox
Private FFormViewModeState As TBFormViewModeState
''' <summary>
''' 依 FormViewMode 來設定控制項狀態。
''' </summary>
< _
Category(WebCommon.Category.Behavior), _
NotifyParentProperty(True), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
PersistenceMode(PersistenceMode.InnerProperty), _
DefaultValue("") _
> _
Public ReadOnly Property FormViewModeState() As TBFormViewModeState
Get
If FFormViewModeState Is Nothing Then
FFormViewModeState = New TBFormViewModeState
End If
Return FFormViewModeState
End Get
End Property
''' <summary>
''' 處理控制項狀態。
''' </summary>
Private Sub DoControlStatus(ByVal ControlStatus As EControlState)
Select Case ControlStatus
Case EControlState.Enable
Me.Enabled = True
Case EControlState.Disable
Me.Enabled = False
Case EControlState.Hide
Me.Visible = False
End Select
End Sub
''' <summary>
''' 依 FormView 的模式來處理控制項狀態。
''' </summary>
Private Sub DoFormViewModeStatus()
Dim oFormView As FormView
'若控制項置於 FormView 中,則依 FormView 的模式來處理控制項狀態
If TypeOf Me.BindingContainer Is FormView Then
oFormView = DirectCast(Me.BindingContainer, FormView)
Select Case oFormView.CurrentMode
Case FormViewMode.Insert
DoControlStatus(Me.FormViewModeState.InsertMode)
Case FormViewMode.Edit
DoControlStatus(Me.FormViewModeState.EditMode)
Case FormViewMode.ReadOnly
DoControlStatus(Me.FormViewModeState.BrowseMode)
End Select
End If
End Sub
''' <summary>
''' 覆寫。引發 PreRender 事件。
''' </summary>
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
MyBase.OnPreRender(e)
'依 FormView 的模式來處理控制項狀態
DoFormViewModeStatus()
End Sub
End Class
三、測試程式
1. 設定控制項相關屬性
我們使用 Northwnd 資料庫的 Products資料表為例,以 GridView+FormView 示範資料「新增/修改/刪除」的操作。在頁面拖曳 SqlDataSource 控制項後,在頁面上的使用 TBGridView 來顯示瀏覽資料。TBGridView 的 FormViewID 設為關連的 TBFormVIew 控制項;另外有使用到 TBCommandField,設定 ShowHeaderNewButton=True,讓命令列具有「新增」鈕。
<bee:TBGridView ID="TBGridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="SqlDataSource1" FormViewID="TBFormView1">
<Columns>
<bee:TBCommandField ShowDeleteButton="True" ShowEditButton="True"
ShowHeaderNewButton="True" >
</bee:TBCommandField>
'省略
</Columns>
</bee:TBGridView>
備註:本文同步發佈於筆者「ASP.NET 魔法學院」部落格
http://www.dotblogs.com.tw/jeff377/archive/2008/10/28/5806.aspx
▼ ADVERTISEMENT ▼
廠商來幫忙
邦友收藏動態
- 常用網路管理工具 Getif (Get Interfaces)教學 (kaiin323)
- 5 本超優免費的自學 Linux 電子書 (scottchen)
- 6款Windows平臺免費備份工具 (tomtom123)
- 關於Cisco、linux、MySQL、Oracle、unix一些命令手冊 (fran633)
- 穩定的感覺會咬人 (heero1219248)
- 化繁為簡的工作拆解手法 (brgodman)
- 系統分析師必須思考的8個問題 (arnolin)
- 用群組原則輕鬆管理使用者電腦 (raytracy)
- 關於CCNA一些自我學習資料大全~! (51pass)
- 10 個不可或缺的 Linux/Unix 指令速查表 (scottchen)
安裝「收藏快捷鍵」,可以讓邦友直接透過Google工具列上的按扭,快速收藏站內、站外的網頁。
相關問答
- [ASP.NET 控制項實作 Day1] 建立 ASP.NET 伺服器控制項專案
- [ASP.NET 控制項實作 Day2] 建立第一個伺服器控制項
- [ASP.NET 控制項實作 Day11] ActiveX 伺服器控制項
- [ASP.NET 控制項實作 Day3] 擴展現有伺服器控制項功能
- 鐵人賽的疑問?
- 最後一天 -- 鐵人賽對我的意義!!!
- [ASP.NET 控制項實作 Day9] 控制項常用 Attribute 介紹(2)
- 收到鐵人賽的T-shirt啦~~ (有圖有真相)
- [ASP.NET 控制項實作 Day4] 複合控制項
- [ASP.NET 控制項實作 Day10] Media Player 控制項
- [ASP.NET 控制項實作 Day30] 整合 jQuery ContextMenu 的右鍵選單控制項
- [ASP.NET 控制項實作 Day19] 控制項設計階段的外觀
- 鐵人賽之期末報告
- [ASP.NET 控制項實作 Day7] 設定工具箱的控制項圖示
- 鐵人賽之期中報告
- 第二屆鐵人賽開始啦,想參賽的必讀哦
- 2009第2屆iT邦幫忙鐵人賽得獎名單公佈
- [ASP.NET 控制項實作 Day27] 控制項依 FormView CurrentMode 自行設定狀態
- [ASP.NET 控制項實作 Day8] 控制項常用 Attribute 介紹(1)
- [ASP.NET 控制項實作 Day5] 屬性與 ViewState







