コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
Option Explicit On
Option Strict On
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
<Assembly: TagPrefix("BaseLibrary.Controls", "custom")>
Namespace Controls
<ToolboxData("<{0}:BaseRadioButton runat=""server"" ID=""BaseRadioButton1"" GroupName=""RadioGroup1"" />")>
Public Class BaseRadioButton
Inherits RadioButton
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
'出力先を独自のTextWriterとして出力する
MyBase.Render(New WriterWrapper(writer, Me))
End Sub
End Class
'''<summary>
'''属性を変更して出力するためのTextWriter
'''</summary>
Public Class WriterWrapper
Inherits HtmlTextWriter
Private _control As BaseRadioButton
Public Sub New(ByVal writer As HtmlTextWriter, ByVal control As BaseRadioButton)
MyBase.new(writer)
'コントロールのインスタンスを保持する
Me._control = control
End Sub
'''<summary>
'''属性を追加する
'''</summary>
'''<param name="key">属性を表す列挙値</param>
'''<param name="value">属性に設定する値</param>
'''<remarks>
'''RadioButtonが属性の設定のために本メソッドを呼び出すため、本メソッドで変更したい属性値を設定する
'''</remarks>
Public Overrides Sub AddAttribute(ByVal key As HtmlTextWriterAttribute, ByVal value As String)
Select Case key
Case HtmlTextWriterAttribute.Name
'ラジオボタンのグループを表す
'ユニークとせず、もともとプロパティで設定した値を出力する
MyBase.AddAttribute(key, _control.GroupName)
Case HtmlTextWriterAttribute.Value
'POST時に出力する値を表す
'コントロールを識別する必要があるため、ユニークとする
MyBase.AddAttribute(key, _control.UniqueID)
Case Else
MyBase.AddAttribute(key, value)
End Select
End Sub
End Class
End Namespace
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="ListViewTest.aspx.vb" Inherits="ListViewTest.ListViewTest" %>
<%@ Register Assembly="BaseLibrary" Namespace="BaseLibrary.Controls" TagPrefix="custom" %>
<asp:ListView ID="ListView1" runat="server" ItemPlaceholderID="itemPlaceHolder1">
<ItemTemplate>
<tr runat="server">
<td runat="server" class="radio-field">
<custom:BaseRadioButton ID="rdoSelect" runat="server" GroupName="TestGroup"/>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。