2013-03-07 37 views
0

我正在將以前的PHP Web應用程序翻譯爲ASP.Net,以用於服務器傳輸目的的Visual Basic。如何通過asp.net中的複選框循環

我想要做的是循環通過一組複選框,看看他們是否被檢查,如果是的話,將他們的值添加到一個字符串。

從我讀到的情況來看,設置爲HTML輸入而不是ASP控件的複選框可能會很棘手,以便循環並獲取值。

此外,複選框控制額外的複選框組,因此,如果(例如)複選框1被選中,那麼我需要檢查複選框組A,以查看其中哪些複選框。如果複選框3被選中,我需要通過B組等環...

所有複選框有ID的一個簡單的增量命名約定:PE1,PE2,PE3等等

什麼是最好的方式在VB中使用VB來做到這一點?在PHP中它是通過提交複選框,並只使用一個變量和計數器,以確定他們的簡單循環:

var name = 'PE'; 
For(i=1; i<10; i++){ 
    checkbox = name.i; 
    if(checkbox.checked){ 
     Blah blah. You get the point. 
    } 
} 

但我不確定如何去這在vb.net。

我已經嘗試過使用FindControl,但是在將它轉換爲可用代碼方面一點運氣。

想法?

+1

是的,如果您想要動態查找「CheckBoxes」,那麼'FindControl'就是您的選擇。你也可以用'For Each'循環'parentControl.Controls.OfType(Of CheckBox)()'並檢查它們的ID。 – 2013-03-07 17:19:19

回答

0

通過ASP複選框循環和HTML複選框之間的最大區別是當您檢查您必須使用的類型時:「HtmlInputCheckbox」而不是「複選框」。這花了我很長時間才弄清楚,但現在這些循環工作得很好。

If TypeOf ctrl Is HtmlInputCheckBox Then 
    Dim chkbox As HtmlInputCheckBox = CType(ctrl, HtmlInputCheckBox) 
    If chkbox.Checked Then 
    Blah 
    End If 
End If 

感謝您的答案!

0

如果這些是HTML控件而不是asp.net CheckBox控件,那麼我會使用javscript(jQuery,如果這是一個選項)做到這一點。

如果你堅持使用服務器端來做到這一點,那麼你將需要添加一個runat="server"到所有的html輸入,然後通過使用FindControl在服務器端搜索它們。實際上,現在我大聲說出來,如果你不打算使用javascript,你應該把它們轉換成asp.net CheckBox控件。

+0

我會這麼做的,但是由於ASP控件將標識符添加到ID的末尾,所以很難使用JavaScript來操作它們。如果我不需要將編譯後的字符串存儲到數據庫中,javascript就可以工作。 – Blunderfest 2013-03-07 17:43:56

+0

要引用生成的clientID,你可以使用這個方法:'$(「#<%= myCheckBox.ClientID%>」)'這是一個很好的技巧,要記住,如果你使用javascript與.net應用程序。 – 2013-03-07 17:48:30

+0

有沒有比HTML複選框更有效的循環ASP複選框? – Blunderfest 2013-03-07 18:06:30