Jag har en sida med 22 dropdownlists där man kan välja vilka spelare som ska vara med i en hockeymatch. iofs. vb.net och iofs går det säkert att göra mycket snyggare.. :) Jag ändrade lite men får det inte att fungera. Vad är det som inte fungerar? <code> Kom på varför det blir fel. Löste det så här. Kanske inte är det snyggaste/bästa sättet men det fungerarjämföra värden i dropdownlists
Kan jag på något smidigt sätt kolla så att samma namn inte är valt två gånger?Sv: jämföra värden i dropdownlists
<code>
Private Function SammaVald() As Boolean
Dim ValdaSpelare(21) As String
Dim c As Control
Dim i, j As Integer
For Each c In Controls
If c.GetType.ToString = "System.Windows.Forms.ComboBox" Then
Dim cbo As ComboBox
cbo = c
cbo.SelectedIndex = 0
ValdaSpelare(i) = cbo.SelectedItem 'beror på hur du laddar listorna.
i += 1
End If
Next
For i = 0 To ValdaSpelare.Length - 1
For j = i + 1 To ValdaSpelare.Length - 1
If ValdaSpelare(i) = ValdaSpelare(j) Then
Return True
End If
Next
Next
Return False
End Function
</code>Sv: jämföra värden i dropdownlists
Användaren ska kunna lämna dropdownlistor tomma. De tomma dropdownlistorna har värdet 0
Försökte kontrollera dom där värdet inte är 0
<code>
Private Function SammaVald() As Boolean
Dim ValdaSpelare(42) As String
Dim c As Control
Dim i, j As Integer
For Each c In Controls
If c.GetType.ToString = "System.web.ui.webcontrols.dropdownlist" Then
Dim cbo As DropDownList
cbo = c
cbo.SelectedIndex = 0
If Not CStr(cbo.SelectedItem.Value) = "0" Then
ValdaSpelare(i) = cbo.SelectedItem.Value 'beror på hur du laddar listorna.
End If
i += 1
End If
Next
For i = 0 To ValdaSpelare.Length - 1
For j = i + 1 To ValdaSpelare.Length - 1
If ValdaSpelare(i) = ValdaSpelare(j) Then
Return True
End If
Next
Next
Return False
End Function
</code>
Sen så anropar jag funktionen
<code>
If SammaVald() Then
Response.Write("FEL")
Else
Response.Write("Rätt")
End If
</code>Sv: jämföra värden i dropdownlists
Edit
Det under fungerar hos mig.Sv: jämföra värden i dropdownlists
Dim ValdaSpelare(42) As String
Dim c As Control
Dim i, j As Integer
For Each c In Me.Page.Controls(1).Controls
If c.GetType.ToString = "System.Web.UI.WebControls.DropDownList" Then
Dim cbo As DropDownList
cbo = c
ValdaSpelare(i) = cbo.SelectedItem.Value 'beror på hur du laddar listorna.
i += 1
End If
Next
For i = 0 To ValdaSpelare.Length - 1
For j = i + 1 To ValdaSpelare.Length - 1
If ValdaSpelare(i) = ValdaSpelare(j) And Not ValdaSpelare(i) = "0" And Not ValdaSpelare(i) = Nothing Then
Return True
End If
Next
Next
Return False
</code>Sv: jämföra värden i dropdownlists
Testade att skriva ut vilka kontroller som hittades och fick då bara ut
System.Web.UI.LiteralControl
System.Web.UI.WebControls.Table
System.Web.UI.LiteralControl
Dropdownlisterna ligger i en tabell med 22 rader som ligger i en annan tabell.Sv: jämföra värden i dropdownlists
<code>
Private Function SammaVald() As Boolean
Dim ValdaSpelare(21) As String
Dim c As Control
Dim c1 As Control
Dim c2 As Control
Dim i, j As Integer
For Each c In tblAPlayers.Controls
If LCase(c.GetType.ToString) = "system.web.ui.webcontrols.tablerow" Then
For Each c1 In c.Controls
If LCase(c1.GetType.ToString) = "system.web.ui.webcontrols.tablecell" Then
For Each c2 In c1.Controls
If LCase(c2.GetType.ToString) = "system.web.ui.webcontrols.dropdownlist" Then
Dim cbo As DropDownList
cbo = c2
ValdaSpelare(i) = cbo.SelectedItem.Value
i += 1
End If
Next
End If
Next
End If
Next
For i = 0 To ValdaSpelare.Length - 1
For j = i + 1 To ValdaSpelare.Length - 1
If ValdaSpelare(i) = ValdaSpelare(j) And Not ValdaSpelare(i) = "0" And Not ValdaSpelare(i) = Nothing Then
Return True
End If
Next
Next
Return False
End Function
</code>