「Tips/.NET/GridViewにラジオボタン」の編集履歴(バックアップ)一覧はこちら

Tips/.NET/GridViewにラジオボタン」(2011/08/07 (日) 19:57:00) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

&topicpath(top=Top) &update() #ls() ---- #asciiart(){ Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Text Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Collections.Specialized ''' <summary> ''' GridViewに含めるラジオボタン・コントロール。 ''' </summary> ''' <remarks></remarks> <DefaultProperty("Text"), ToolboxData("<{0}:GridViewRadioButton runat=server></{0}:GridViewRadioButton>")> _ Public Class GridViewRadioButton Inherits RadioButton ''' <summary> ''' リクエスト送信されたデータを処理します。 ''' このコントロールによって出力されたラジオボタンは、name属性にGroupName、 ''' value属性にUniqueID を出力します。 ''' name属性が GroupName で送信された値を確認して、このコントロールのインスタンスが ''' 選択されたラジオボタンであるか判断します。 ''' </summary> ''' <param name="postDataKey">未使用</param> ''' <param name="postCollection">リクエスト送信されたデータのコレクション。</param> ''' <returns> ''' このインスタンスの選択状態が、「非選択」から「選択」になったときにTrue。 ''' その他はFalse。 ''' </returns> ''' <remarks></remarks> Protected Overrides Function LoadPostData( _ ByVal postDataKey As String _ , ByVal postCollection As NameValueCollection) As Boolean ' 選択されたラジオボタンの値 Dim checkedValue = postCollection(Me.GroupName) ' このインスタンスのラジオボタンが選択されたのか判定 Dim meIsChecked As Boolean = (checkedValue = Me.UniqueID) ' 選択状態に変化があった場合、このインスタンスの選択状態を併せて変更する If Me.Checked <> meIsChecked Then Me.Checked = meIsChecked ' 非選択から選択になったときのみ Trueを戻す。 Return meIsChecked End If ' 選択状態に変化がない場合は、False Return False End Function ''' <summary> ''' このコントロールを画面表示用に出力します。 ''' </summary> ''' <param name="writer">標準で使用するHtmlTextWriter</param> ''' <remarks></remarks> Protected Overrides Sub Render(ByVal writer As HtmlTextWriter) ' HtmlTextWriterを、このクラス専用に置き換えて、画面出力します。 MyBase.Render(New RadioWriter(writer, Me)) End Sub ''' <summary> ''' このクラスのラジオボタンを出力するHtmlTextWriter。 ''' Decoratorパターンで、一部加工した値を、本来のHtmlTextWriterに出力します。 ''' </summary> ''' <remarks></remarks> Private Class RadioWriter Inherits HtmlTextWriter ''' <summary> 出力対象のラジオボタン。</summary> Private _radio As GridViewRadioButton ''' <summary> ''' コンストラクタ。 ''' ''' </summary> ''' <param name="writer">標準で使用するHtmlTextWriter</param> ''' <param name="radio">出力対象のラジオボタン。</param> ''' <remarks></remarks> Public Sub New( _ ByVal writer As HtmlTextWriter _ , ByVal radio As GridViewRadioButton) ' スーパークラスのコンストラクタの呼び出し MyBase.New(writer) ' ラジオボタン Me._radio = radio End Sub ''' <summary> ''' HTML出力時のタグの属性を設定します。 ''' </summary> ''' <param name="key">属性の種別</param> ''' <param name="value">標準で出力する属性値</param> ''' <remarks></remarks> Public Overrides Sub AddAttribute( _ ByVal key As HtmlTextWriterAttribute _ , ByVal value As String) Select Case key Case HtmlTextWriterAttribute.Name ' NAME属性 ' GroupNameを出力して、ラジオボタン同士のNAME属性を揃える MyBase.AddAttribute(key, Me._radio.GroupName) Case HtmlTextWriterAttribute.Value ' VALUE属性 ' ラジオボタンを識別するUniqueIDを出力する MyBase.AddAttribute(key, Me._radio.UniqueID) Case Else ' その他の属性は、スーパークラスに委譲する MyBase.AddAttribute(key, value) End Select End Sub End Class End Class }

表示オプション

横に並べて表示:
変化行の前後のみ表示: