Anche tu mi hai fatto riflettere
Questa è una prova solo per vedere se riuscivo a fare quello che chiedeva pietro09, chiaramente c'è spazio per mille modifiche o personalizzazioni.
Io ho fatto così, sicuramente ci sono altri modi migliori...
Controlli.vb
codice:
Imports System
Imports System.IO
Imports System.Drawing
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.SessionState
Imports Microsoft.VisualBasic
Imports System.Web
Imports System.Configuration
Imports System.Collections.Specialized
Imports System.ComponentModel
Namespace Controlli
Public Class Panel_ : Inherits Panel
Public Property Group_Name() As String
Get
Group_Name = ViewState("Group_Name")
End Get
Set(ByVal Value As String)
ViewState("Group_Name") = Value
End Set
End Property
Public Property Testo() As Array
Get
Testo = ViewState("Testo")
End Get
Set(ByVal Value As Array)
ViewState("Testo") = Value
End Set
End Property
Public Property Script() As Array
Get
Script = ViewState("Script")
End Get
Set(ByVal Value As Array)
ViewState("Script") = Value
End Set
End Property
Public Property Valore() As Array
Get
Valore = ViewState("Valore")
End Get
Set(ByVal Value As Array)
ViewState("Valore") = Value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Count = 0
Dim i As Integer
Dim temp
For i = Valore.GetLowerBound(0) To (Valore.GetUpperBound(0))
temp = Valore(i)
Dim pippo As New RadioButton()
pippo.GroupName = Me.Group_Name
pippo.Text = Testo(i)
pippo.ID = i
pippo.Attributes.Add("onclick", "return confirm('" & Script(i) & "');")
If Selezione = i Then
pippo.Checked = True
End If
Me.Controls.Add(pippo)
Dim lit As New Literal()
lit.Text = "
"
Count = Count + 1
Me.Controls.Add(lit)
Next
End Sub
Public Property Count() As Integer
Get
Return ViewState("Count")
End Get
Set(ByVal Value As Integer)
ViewState("Count") = Value
End Set
End Property
Public Property Selezione() As Integer
Get
Return ViewState("Selezione")
End Get
Set(ByVal Value As Integer)
ViewState("Selezione") = Value
End Set
End Property
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
MyBase.Render(writer)
End Sub
End Class
End Namespace
WebForm2.aspx (Cambiare le X con i riferimenti nella direttiva page!)
codice:
<%@ Register TagPrefix="cc1" Namespace="XXXXXX.Controlli" Assembly="XXXXXX" %>
<%@ Page Language="vb" AutoEventWireup="false" debug="true" Codebehind="WebForm2.aspx.vb" Inherits="XXXXXX.WebForm2"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm2</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<cc1:Panel_ runat="server" id="rb_list" Group_Name="Gruppo1" opcode="1"></cc1:Panel_>
<asp:Button id="Button1" Text="Invia" onclick="Button1_Click" runat="server" />
<asp:Label id="Label1" font-name="Verdana" font-size="8pt" runat="server" />
</form>
</body>
</HTML>
WebForm2.aspx.vb
codice:
Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Configuration
Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Globalization
Imports System.Resources
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Threading
Imports System.Web
Imports System.Web.Caching
Imports System.Web.Security
Imports System.Web.SessionState
Imports System.Web.UI
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Drawing
Imports XXXXXX.Controlli
Public Class WebForm2
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents rb_list As Controlli.Panel_
#Region " Codice generato da Progettazione Web Form "
'Chiamata richiesta da Progettazione Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
'Non modificarla nell'editor del codice.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.EnableViewState = False
If Not IsPostBack Then
BindGrid()
End If
End Sub
Private Sub BindGrid()
Dim Testo() As String = {"Testo1", "Testo2", "Testo3", "Testo4"}
Dim Valore() As Integer = {1, 2, 3, 4}
Dim Script() As String = {"Hai selezionato Valore 1", "Hai selezionato Valore 2", "Hai selezionato Valore 3", "Hai selezionato Valore 4"}
rb_list.Testo = Testo
rb_list.Valore = Valore
rb_list.Script = Script
End Sub
Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim i As Integer
For i = 0 To rb_list.Count - 1
If Request.Form("Gruppo1") = CStr(i) Then
Label1.Text = "È stato selezionato: " & rb_list.Testo(i) & " con valore = " & rb_list.Valore(i)
rb_list.Selezione = i
End If
Next
End Sub
End Class
Ciao
Legnetto