2012-06-19 91 views
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只是意味着没有得到检查。有没有一种理想的方式来编码?虽然是理想的?

这些值来自数据库表格,所有数据都以该格式存在。

+0

你用0表示什么意思?你也chk0 ...和0多次出现在你的列表中... – Ixx

+0

这有点混乱。你说第一个数字(18)意味着ID为“chk18”的复选框应该被检查,但0意味着什么都没有被检查?怎么样的复选框ID为“chk0” – awbergs

+0

使用['CheckBoxList'控件](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx)?或者['Repeater'控件](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx)? –

回答

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 
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; 
     } 
    } 
} 
+0

尽管他已经使用'var'而不是'Dim',他已经将它标记为VB.NET而不是C#。 –

+0

如果需要,应该很容易转换。 –