asp.net vb CheckBoxList Выбран из CSV - PullRequest
       296

asp.net vb CheckBoxList Выбран из CSV

0 голосов
/ 12 апреля 2011

Я изучаю asp.net и мне нужно было иметь CheckBoxList, какие элементы будут изначально выбраны, если они находятся в строке CSV из базы данных.

У меня все получилось, хотя я просто подумал, что я сделал это наилучшим образом, так как это показалось мне немного затянувшимся?

Спасибо за предоставленную помощь.

ASPX

<asp:CheckBoxList ID="rh_type" runat="server" CssClass="chkbox" 
RepeatLayout="Flow" CausesValidation="True">
<asp:ListItem>House</asp:ListItem>
<asp:ListItem>Flat/Apartment</asp:ListItem>
<asp:ListItem>Bungalow</asp:ListItem>
<asp:ListItem>Any</asp:ListItem>
</asp:CheckBoxList>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />

CODE

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim i As Integer
    Dim str_rh_type As String = "House,Bungalow"
    Dim split As String() = str_rh_type.Split(","c)

    For Each s As String In split
        'Response.Write(s & "<br />")

        For i = 0 To rh_type.Items.Count - 1
            If rh_type.Items(i).Text = s Then

                rh_type.Items(i).Selected = True

            End If
        Next

    Next s

End Sub

Еще раз спасибо J.

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

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

Это должно быть просто точкой отсчета для принятия собственных решений относительно практики кодирования.Конечно, то, что работает для одних, не работает для других.

Вот как я могу написать это ...

Управление ASP.NET:

<asp:CheckBoxList ID="CheckBoxListHomeType" runat="server" 
    CssClass="chkbox" RepeatLayout="Flow" CausesValidation="True" />
...
  • ID CheckBoxListHomeType легко запомнить, и intellisense поможет мне до конца.(или другой общий подход будет cblHomeType в качестве идентификатора).Получить intellisense, чтобы помочь с таким именем, как rh_type, может быть так же просто, но идентификаторы, которые напоминают, какой это элемент управления, могут реально помочь при поддержке кода

VB.NET:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        LoadHomeTypes()
    End If
End Sub

Protected Sub LoadHomeTypes()
    Dim houseTypes = "House,Bungalow,Flat/Apartment,Any"
    For Each houseType As String In houseTypes.Split(",")
        CheckBoxListHomeType.Items.Add(New ListItem(houseType))
    Next
End Sub
  • Хранение логики в отдельной функции LoadHomeTypes может сделать код более читабельным.
  • Создание нового ListItem при повторении списка homeTypes должно устранить необходимость повторенияповерх элементов CheckBoxList (если вам нужно очистить существующие, вы можете добавить CheckBoxListHomeType.Items.Clear() в начало функции)
  • проверка Not Page.IsPostBack предотвращает необходимость загрузки раскрывающихся значений при каждой обратной передаче, если вам не нужно их менять.
0 голосов
/ 29 ноября 2013

Это хорошие ответы, попробуйте это

Dim ds As DataSet
    ds = Insertstu.searchrec(txtsearch.Text)
    txtnm.Text = ds.Tables(0).Rows(0)("stuname").ToString()
    txtadd.Text = ds.Tables(0).Rows(0)("stuaddress").ToString()
    txtph.Text = ds.Tables(0).Rows(0)("stuph").ToString()
    rdobtnsex.Text = ds.Tables(0).Rows(0)("sex").ToString()
    Dim arr As String()
    Dim quali As String = ds.Tables(0).Rows(0)("qualified").ToString()
    arr = quali.Split(",")
    Dim i As Integer
    For Each itm As String In arr
        For i = 0 To chkqualify.Items.Count - 1
            If chkqualify.Items(i).Text = itm Then
                chkqualify.Items(i).Selected = True
            End If
        Next
    Next

'' chkqualify is id флажка

...