過去のサンプルの修正(DataGrid内のラジオボタンでグループに出来ない問題の回避方法)

注意:

http://d.hatena.ne.jp/NAL-6295/20060726

にて再度改訂済みです

表題の通りですが、

RadioButtonコントロールを継承して、以下のコードを書くと

グループ化できるし、ポストバック時にCheckedプロパティも

正常に動作します。

NAL-6295の舌先三寸 – DataGrid内のラジオボタンでグループに出来ない問題の回避方法

というエントリで掲載したサンプルは、デザイン時に描画エラーが出てしまう問題が発生していました。(勿論、実行時には使える)

そこで、今回、その制限を回避することが可能になりましたので、新しくサンプルを公開します。

過去に、先のエントリを参照された方は、こちらに置き換えると良いかもしれません。

001 Imports System.ComponentModel
002 Imports System.Web.UI
003 
004 
005 <DefaultProperty("Checked"), ToolboxData("<{0}:RadioButtonEx runat=server></{0}:RadioButtonEx>")> _
006 Public Class RadioButtonEx
007     Inherits System.Web.UI.WebControls.RadioButton
008 
009     Public Overrides ReadOnly Property UniqueID() As String
010         Get
011             If Me.GroupName Is Nothing OrElse Me.GroupName.Length = 0 Then
012                 Return MyBase.UniqueID
013             Else
014                 Return Me.GroupName()
015             End If
016         End Get
017     End Property
018 
019     Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
020         Me.Attributes.Add("value", MyBase.UniqueID)
021         MyBase.OnPreRender(e)
022     End Sub
023 
024     Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
025         MyBase.OnInit(e)
026         If Me.Page.IsPostBack Then
027             Me.Checked = MyBase.UniqueID = Me.Page.Request.Form.Item(Me.GroupName)
028         End If
029     End Sub
030 End Class
031 
032 

Share