[英]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.