2012-06-19 46 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

如果需要,應該很容易轉換。 –