繁体   English   中英

asp.net vb CheckBoxList从CSV中选择

[英]asp.net vb CheckBoxList Selected from CSV

我正在学习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" />

    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。

您的代码可以正常运行,但是可能需要对可维护性进行一些调整。 同样不确定您是否需要嵌套循环来加载下拉项。

这应该只是您自己制定编码实践的参考点。 当然,对某些人有效的方法对其他人无效。

这就是我编写代码的方式...

ASP.NET控件:

<asp:CheckBoxList ID="CheckBoxListHomeType" runat="server" 
    CssClass="chkbox" RepeatLayout="Flow" CausesValidation="True" />
...
  • CheckBoxListHomeType ID很容易记住,而intellisense可以帮助我解决其他问题。 (或者另一种常见方法是将cblHomeType作为ID)。 让智能感知来帮助使用rh_type这样的名称可能很容易,但是类似于ID的控件的ID在维护代码时确实可以提供帮助

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函数中可以使代码更具可读性。
  • 在迭代homeTypes列表的同时创建一个新的ListItem应该消除对CheckBoxList项进行迭代的需要(如果需要清除现有项,可以在函数顶部添加CheckBoxListHomeType.Items.Clear()
  • Not Page.IsPostBack检查可以避免在每次回发时都加载下拉值,除非您需要更改它们。

这是一个很好的答案,试试这个

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是复选框列表ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM