Panelやその他のコンテナコントロールにRadioButtonListsを埋め込みます。次に、コントロールコレクションをループして、すべてのRadioButtonListsを取得できます。
RBLの数または選択したRBLの数で除算しますか?
次の整数へ従って非ゼロとして選択カウント、RBL-カウントによって除算例、及びラウンド:
ASPX:
<asp:Panel ID="OptionPanel" runat="server">
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
<asp:ListItem Text="4" Value="4"></asp:ListItem>
</asp:RadioButtonList>
<!-- and so on ... -->
</asp:Panel>
<asp:Button ID="BtnCalculate" runat="server" Text="calculate average value" />
<asp:Label ID="LblResult" runat="server" Text=""></asp:Label>
と分離コードで:
Protected Sub BtnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnCalculate.Click
Dim rblCount As Int32
Dim total As Int32
Dim avg As Int32
For Each ctrl As UI.Control In Me.OptionPanel.Controls
If TypeOf ctrl Is RadioButtonList Then
rblCount += 1
Dim rbl As RadioButtonList = DirectCast(ctrl, RadioButtonList)
If rbl.SelectedIndex <> -1 Then
Dim value As Int32 = Int32.Parse(rbl.SelectedValue)
total += value
End If
End If
Next
If rblCount <> 0 Then
avg = Convert.ToInt32(Math.Round(total/rblCount, MidpointRounding.AwayFromZero))
End If
Me.LblResult.Text = "Average: " & avg
End Sub
よります選択したRadioButtonListsだけを数え、feを無視するために必要な新しい情報をあなたに完全RadioButtonList14は、見て:
If rbl.SelectedIndex <> -1 AndAlso rbl.ID <> "RadioButtonList14" Then
Dim value As Int32 = Int32.Parse(rbl.SelectedValue)
total += value
rblCount += 1 'count only the selected RadiobuttonLists'
End If
私は私がこのRadioButtonListのを無視するrbl.ID <> "RadioButtonList14"
として追加の制限を追加したほか、If rbl.SelectedIndex <> -1
-statementにrblCount += 1
を移動しています。
私はこの解決策が好きです...平均を取得するときに特定の列を無視することはできますか? – Tom
@Tom:もちろん、「特定の」列を定義してください!あなたは私が合計値をどのように数えるかを見ています。それに応じてカスタマイズするのは簡単です。 Btw、私の答えにコメントするのに10日かかった? ;-) –
カラムでは、ラジオボタンリストを意味しました。ごめんなさい。私は記入されていないものは無視し、例えばradiobuttonlist14を無視する必要があります。 – Tom