0
<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 是理想的吗?

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

4

2 回答 2

0

请注意,这对您的控件“chk0”不起作用,并且如果您没有相关复选框(例如 = 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
于 2012-06-19T20:22:33.070 回答
0

我不太确定“0”的值是什么意思,因为你有一个 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;
        }
    }
}
于 2012-06-19T19:22:33.050 回答