复选框和数组

时间:2012-06-19 19:13:13

标签: asp.net html vb.net

<tr>
<td width=60%><asp:CheckBox ID="chk0" runat="server" /> ...</td>
<td width=40%><asp:CheckBox ID="chk1" runat="server" /> ...</td>
</tr>
...
...
...

我有这样的价值观:

var lst = "18,6,0,7,0,4,0,1,5,0,2"

如果有18,则检查chk18,等等... 0表示没有检查。有没有一种理想的代码编码方式? whileloop是理想的吗?

值来自数据库表,所有数据都采用该格式。

2 个答案:

答案 0 :(得分:0)

我不确定你对&#34; 0&#34;的价值是什么意思?因为你有一个id为0的控件。无论如何,我暂时没有完成ASP.NET WebForms,但是这会让你顺利完成:

var lst = "18,6,0,7,0,4,0,1,5,0,2"
var checkboxIdsToBeSelected = lst.Split(',');

foreach (var id in checkboxIdsToBeSelected) {
    foreach (Control ctrl in Page.Controls) {
        if (ctrl is CheckBox && cntrl.ID == "chk" + id) {
          ((CheckBox)(ctrl)).Checked = true;
        }
    }
}

答案 1 :(得分:0)

注意,这对你的控件'chk0'不起作用,如果你没有相关复选框就会爆炸(你的数据中有ex = 18,但你没有控制chk18)。

    Dim strData As String = "18,6,0,7,0,4,0,1,5,0,2"

    Dim lstIDs As List(Of String) = strData.Split(",").ToList()

    For Each strID As Integer In lstIDs

        If CInt(strID) > 0 Then

            CType(Page.FindControl("chk" & strID), CheckBox).Checked = True

        End If

    Next