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がチェックされ、ect...0はチェックされないことを意味します。これをコーディングする理想的な方法はありますか?whileloopは理想的ですか?

値はデータベーステーブルから取得され、すべてのデータはその形式です。

4

2 に答える 2

0

IDが0のコントロールがあるため、「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 に答える
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 に答える