2012-02-29 104 views
0

我的網頁上有一個DataList控件,其中的行由ItemTemplate填充。每行都有一個複選框,並且在按鈕單擊時,我將生成一個字符串,它實際上是一個sql查詢文本。根據用戶輸入生成中繼器

從DB查詢返回的每個結果有10行這是在另一個DataList控件中顯示,因爲這樣的事情:

<Header> 

Item1: Result1 
Item2: Result2 
Item3: Result3 
... 
Item10: Result10 

的問題是,我不知道有多少複選框會由用戶選擇,並根據返回結果的數量將是未知的。 所以,如果用戶從第一DataList控件選擇兩個複選框,結果DataList控件應該有兩列:

<Header1>     <Header2> 

Item1: Result1 | Item 1: ResultCol2 
Item2: Result2 | Item 2: ResultCol2 
Item3: Result3 | Item 3:ResultCol2 
... 
Item10: Result10 | Item 10: ResultCol2 

我試着想一個解決方案中。比方說,用戶選擇兩個複選框:

foreach checkbox selected by the user 
    Make a new repeater. Add a new header. 
    Fetch the data from the database (Each result contains 10 columns) and bind to the repeater. 
    Add the repeater to a container on the web page. 

現在,我記得在窗戶的形式,例如除了運行時生成的控制可以通過像TableLayout.Add(childElements)

進行,但是,我不能想在Web窗體中類似的東西。這實際上是正確的方法嗎? DataControl的這種動態構建如何在這種情況下實現?

回答

0

如果你想獲得計數。我會爲此寫一個Lambda表達式:

var selectedChkboxCount = DataList1.Items.Cast<DataListItem>(). 
          Where(s => ((CheckBox)s.FindControl("checkboxName")).Checked).Count(); 
+0

我已經通過迭代chkBoxes來計數。在這之後的步驟還是有點朦朧,就像上面生成這個新的DataList一樣 – user1240679 2012-02-29 16:40:59