ASP.net перебирает таблицу - PullRequest
1 голос
/ 21 марта 2010

Мне было интересно, сможет ли кто-нибудь мне помочь;У меня есть таблица, которая выглядит примерно так:

<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> 

Ответы [ 3 ]

3 голосов
/ 21 марта 2010

Если вы хотите получить доступ к строкам в ASP.NET (на стороне сервера), вам необходимо преобразовать таблицу, строки и ячейки в управление сервером (используя runat = "server") и выполнить итерации по элементам управления в стол.

РЕДАКТИРОВАТЬ: : - Если вы добавляете строки, ячейки и радионетчики следующим образом, все они будут серверными элементами управления (и runat = server), так что вы можете получить к ним доступ, как я упомянуто выше: -

// 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);
}

EDIT: -

Вы можете найти элементы управления в каждой ячейке. Что-то вроде ниже: -

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

}

Или, если вы хотите выполнять итерации на стороне клиента, используя Javascript, посмотрите здесь и вам не нужно применять runat = "server".

2 голосов
/ 21 марта 2010

Звучит так, как будто вы начинаете с базовых элементов <table> на странице разметки и динамически добавляете эти <input> впоследствии.

Подумайте о таком подходе:

  1. Добавьте атрибут runat="server" в вашу таблицу.
  2. В коде, куда вы добавляете эти теги <input>, добавьте новый элемент управления RadioButton. Используйте здесь идентификатор, который вы можете предсказать позже. Возможно, вы можете использовать RadioButtonList вместо этого, если варианты логически сгруппированы!
  3. Неясно, добавляете ли вы вручную эти <tr> и <td> в виде строк. Рассмотрим вариант new TableRow() и new TableCell(). Затем добавьте новый RadioButton в коллекцию TableCell.Controls с tc.Controls.Add(myNewRadioButton);
  4. В своем коде обратной передачи просто обратитесь к элементам управления RadioButton с помощью id или даже переберите свойство коллекции Controls Table1.
foreach (Control x in Table1.Controls)
{
    if (x.GetType().ToString().Equals("System.Web.UI.WebControls.RadioButton"))
    {
         if (((RadioButton)x).Checked)
         {
             //proceed.
         }
    }
}
0 голосов
/ 21 марта 2010

Преобразуйте все элементы управления в элементы управления сервера (добавив атрибут runat = "server").Затем вы можете программно получить доступ к тому, что вам нужно o.Сервер.

...