2010-03-21 77 views
1

我想知道是否有人能幫助我;我有一個如下所示的表格:ASP.net循環訪問表

<table id="Table1" border="0"> 
    <tr> 
     <td><b>1.</b> Question 1</td> 
    </tr><tr> 
     <td style="border-width:5px;border-style:solid;"></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio1" type="radio" name="Group1" value="Radio1" /><label for="Radio1">Answer1</label></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio1" type="radio" name="Group1" value="Radio1" /><label for="Radio1">Answer2</label></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio1" type="radio" name="Group1" value="Radio1" /><label for="Radio1">Answer3</label></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio1" type="radio" name="Group1" value="Radio1" /><label for="Radio1">Answer4</label></td> 
    </tr><tr> 
     <td style="height:30px;"></td> 
    </tr><tr> 
     <td><b>2.</b> Question 2</td> 
    </tr><tr> 
     <td style="border-width:5px;border-style:solid;"></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio2" type="radio" name="Group2" value="Radio2" /><label for="Radio2">yes</label></td> 
    </tr><tr> 
     <td align="left" style="width:1000px;"><input id="Radio2" type="radio" name="Group2" value="Radio2" /><label for="Radio2">no</label></td> 
    </tr><tr> 
     <td style="height:30px;"></td> 
    </tr> 
</table> 

我該如何去循環每組單選按鈕並獲取所選單選按鈕的文本?

上面顯示的代碼是動態創建的......在我的aspx文件我有以下代碼:

<asp:Table ID="Table1" runat="server"> 
     </asp:Table> 
+0

該表沒有出現在服務器上運行。 – Pierreten 2010-03-21 14:25:42

回答

2

聽起來好像您在標記頁面中以準系統<table>開始,然後動態添加這些<input>

考慮此做法:

  1. runat="server"屬性添加到您的表。
  2. 在添加<input>標籤的代碼中,添加一個新的RadioButton控件。在這裏使用一個你可以預測的ID。也許你可以用RadioButtonList來代替,如果這些選擇是邏輯分組的話!
  3. 目前還不清楚你是否手動添加那些<tr><td>作爲字符串。考慮new TableRow()new TableCell()的選項。然後用tc.Controls.Add(myNewRadioButton);
  4. 添加新RadioButtonTableCell.Controls收集在回傳的代碼,只需通過Table1Controls集合財產id,甚至循環是指你的RadioButton控制。
foreach (Control x in Table1.Controls) 
{ 
    if (x.GetType().ToString().Equals("System.Web.UI.WebControls.RadioButton")) 
    { 
     if (((RadioButton)x).Checked) 
     { 
      //proceed. 
     } 
    } 
} 
+0

if(x是RadioButton)如何從選定的單選按鈕中獲取文本? – c11ada 2010-03-21 18:28:06

+0

@ c11ada - 這是確定RadioButton是否被選中的一種方法。 – 2010-03-21 20:54:19

0

轉換所有控件服務器控件(通過添加RUNAT =「server」屬性)。然後你可以編程訪問你需要的東西。服務器。

+0

該表已設置爲runat服務器...但所有單選按鈕和組都是動態創建的...所以我怎麼去改變這一切,以確保所有的控制動態創建runat服務器 – c11ada 2010-03-21 14:48:00

3

如果要訪問ASP.NET中的行(在服務器端),需要將表,行和單元格轉換爲服務器控件(使用runat =「server」)並遍歷桌子。

編輯:: - 如果要添加下列方式行,細胞和radionbuttons,他們都將在服務器控件(並RUNAT =服務器),這樣就可以訪問他們,我上面提到的方法: -

// Create new row and add it to the table. 
TableRow tRow = new TableRow(); 
table1.Rows.Add(tRow); 
for (cellCtr = 1; cellCtr <= cellCnt; cellCtr++) 
{ 
// Create a new cell and add it to the row. 
TableCell tCell = new TableCell(); 
RadioButton rdb = new RadioButton(); 
rdb.ID = "rdb_" + cellCtr.ToString(); 
rdb.Text = "radio button"; 
rdb.GroupName = "rdbGroup"; 
tCell.Controls.Add(rdb); 
tRow.Cells.Add(tCell); 
} 

編輯: -

您可以找到控制在每cell.Something象下面這樣: -

foreach(TableCell cell in tableRow.Cells) 
{ 
     foreach(Control ctrl in cell.Controls) 
     { 
     if(ctrl is RadioButton) 
     { 
     if(ctrl.Selected) 
      { 
      string rdValue=ctrl.Text; 
      } 
     } 
     } 

} 

或者如果您想使用Javascript在客戶端進行迭代,請查看here,並且您不必應用runat =「server」。

+0

表已經設置爲runat服務器...但所有的單選按鈕和組動態創建...所以怎麼做我去改變這一切,以確保所有的控制動態創建runat服務器 – c11ada 2010-03-21 14:48:31

+0

我剛剛編輯我的答案。看看,讓我知道如果這對你有用。 – 2010-03-21 15:02:47

+0

這正是我如何添加單選按鈕和行......但我堅持的位是我如何通過單選按鈕組中的每一個循環,並獲得每個選定單選按鈕的文本? – c11ada 2010-03-21 15:19:04