Флажок в стиле списка - PullRequest
       2

Флажок в стиле списка

0 голосов
/ 26 октября 2010

Возможно ли иметь список переключателей, как у нас есть флажок списка?На самом деле я хочу загрузить все опции из базы данных в список, но не хочу, чтобы пользователь позволял проверять более одного элемента.

Также как читать его (скажем, пункт 4 списка), который я хочу сохранитьего значение в переменной.

Спасибо и наилучшими пожеланиями.Фуркан

1 Ответ

1 голос
/ 26 октября 2010

Если вы имеете в виду ASP.Net RadioButtonList-Control, попробуйте следующий пример:

aspx (вы можете настроить источник данных в конструкторе (показать смарт-тег):

<asp:RadioButtonList ID="RadioButtonList1" runat="server" DataSourceID="SqlDataSource1"
     DataTextField="ClaimStatusName" DataValueField="idClaimStatus">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:RM2ConnectionString %>"
            SelectCommand="SELECT [idClaimStatus], [ClaimStatusName] FROM [dimClaimStatus]">
</asp:SqlDataSource>

A Radiobuttonlistпозволяет пользователю выбрать только один элемент по умолчанию. Выбранный элемент сохраняется в RadioButtonList1.SelectedItem.

РЕДАКТИРОВАТЬ : так как вы получили подтверждение, что это проблема с Winform, вам нужна GroupBox , чтобы пользователь мог выбрать только один.

Чтобы динамически создавать радиокнопки из источника данных и добавлять их в Groupbox, взгляните на мой пример кода:

    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim allStatus As DataSet2.StatusDataTable = New DataSet2TableAdapters.StatusTableAdapter().GetData()
        For i As Int32 = 0 To allStatus.Rows.Count - 1
            Dim status As DataSet2.StatusRow = allStatus(i)
            Dim rb As New RadioButton()
            rb.Text = status.ClaimStatusName
            rb.Tag = status.idClaimStatus
            rb.Location = New Point(Me.GroupBox1.Location.X + 5, Me.GroupBox1.Location.Y + i * rb.Height)
            AddHandler rb.CheckedChanged, AddressOf RBCheckedChanged
            Me.GroupBox1.Controls.Add(rb)
        Next
        Me.GroupBox1.Visible = allStatus.Rows.Count > 0
        If allStatus.Rows.Count > 0 Then
            Dim width, height As Int32
            Dim lastRB As Control = Me.GroupBox1.Controls(GroupBox1.Controls.Count - 1)
            width = lastRB.Width + 20
            height = lastRB.Height
            Me.GroupBox1.Size = New Size(width, allStatus.Rows.Count * height + 20)
        End If
    End Sub

    Private Sub RBCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim source As RadioButton = DirectCast(sender, RadioButton)
        Dim checkedRB As RadioButton = getCheckedRadioButton(Me.GroupBox1)
        'source and checkedRB are the same objetcs because we are in CheckedChanged-Event'
        'but getCheckedRadioButton-function works from everywhere'
    End Sub

    Private Function getCheckedRadioButton(ByVal group As GroupBox) As RadioButton
        For Each ctrl As Control In group.Controls
            If TypeOf ctrl Is RadioButton Then
                If DirectCast(ctrl, RadioButton).Checked Then Return DirectCast(ctrl, RadioButton)
            End If
        Next
        Return Nothing
    End Function

Запомнитьчто вы должны заменить мои объекты данных вашими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...