我正在学习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
再次感谢 学家
答案 0 :(得分:1)
您的代码功能正常,但可能会对可维护性进行一些调整会有所帮助。还不确定您是否需要嵌套循环来加载下拉项目。
这应该只是一个参考点,可以自己决定编码实践。当然,对某些人有用的东西对别人不起作用。
以下是我对此进行编码的方式......
ASP.NET控件:
<asp:CheckBoxList ID="CheckBoxListHomeType" runat="server"
CssClass="chkbox" RepeatLayout="Flow" CausesValidation="True" />
...
CheckBoxListHomeType
的ID很容易记住,智能感知会让我完全接受。 (或另一种常见方法是cblHomeType
作为ID)。获取intellisense以帮助rh_type
这样的名称可能同样容易,但是在维护代码时,类似于控件的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
函数中可以使代码更具可读性。ListItem
列表时创建新的homeTypes
应该不需要迭代CheckBoxList项目(如果您需要清除现有的项目,可以添加CheckBoxListHomeType.Items.Clear()
到功能的顶部)Not Page.IsPostBack
检查可以防止每次回发都需要加载下拉值,除非您需要更改它们。答案 1 :(得分:0)
这是很好的答案,试试这个
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是checkboxlist id