<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是理想的吗?
值来自数据库表,所有数据都采用该格式。
答案 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