Вы смотрите внутри данной страницы контрольный список.
Ваши переключатели не будут там. Они находятся в списке управления TableCell, к которому вы добавили их.
Вам нужно найти свою таблицу, затем пройти через каждую строку, и для каждой строки найдите ячейку, а затем внутри ячейки найдите переключатели.
В качестве альтернативы вы можете попробовать добавить кнопки в общий элемент управления объектами с использованием типа RadioButton при их создании. Затем ссылайтесь на них непосредственно из вашего обработчика событий btnSave_Click. Pro: Удаляет необходимость навигации по иерархии элементов управления. Con: Распределяет код из фактической базовой реализации. Это потенциально может вводить в заблуждение относительно истинного расположения этих элементов управления, когда разработчики будут в будущем рассмотрены ... Набор, который потенциально может включать вас после того, как вы успели забыть, что вы сделали и почему. Для меня это обычно около 4 часов в хороший день.
Поэтому я предпочитаю метод навигации по иерархии, поскольку он более правдоподобен тому, как вещи фактически выложены. Но я уверен, что общий метод списка тоже будет работать.
EDIT
Я думаю, что кусок головоломки вы недостающей переопределение метода CreateChildControls.
Я признаю, что ваш вопрос был сформулирован в VB. Но я дерьмова с VB, поэтому я пошел с C#. Надеюсь, что это имеет смысл для вас.
Подтверждено, что это работает в VS 2010 при размещении на сервере разработки ASP.NET.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication3
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
this.CreateRadioButtons();
}
private void CreateRadioButtons()
{
var tblStars = new Table();
tblStars.ID = "tblStars";
ListItem opt1 = new ListItem();
opt1.Text = "I like red";
opt1.Value = "Red";
ListItem opt2 = new ListItem();
opt2.Text = "I like green";
opt2.Value = "Green";
ListItem opt3 = new ListItem();
opt3.Text = "I like blue";
opt3.Value = "Blue";
var rb = new RadioButtonList();
rb.ID = "RBQuestion_1";
rb.Items.Add(opt1);
rb.Items.Add(opt2);
rb.Items.Add(opt3);
var tc = new TableCell();
var tr = new TableRow();
tc.Controls.Add(rb);
tr.Cells.Add(tc);
tblStars.Rows.Add(tr);
form1.Controls.Add(tblStars);
}
protected void btnSave_Click(object sender, EventArgs e)
{
var tblStars = this.form1.FindControl("tblStars") as Table;
if (tblStars == null)
return;
foreach (TableRow row in tblStars.Rows)
{
foreach (TableCell cell in row.Cells)
{
var rb = cell.FindControl("RBQuestion_1") as RadioButtonList;
if (rb == null)
continue;
var selectedValue = rb.SelectedValue;
}
}
}
}
}
Моя соответствующая страница разметка:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
</div>
</form>
</body>
</html>
спасибо за reply..if я создать динамическую таблицу в вышеуказанном способе bindForm, как я могу получить доступ к этой таблице в кнопке Сохранить обработчик события .Это не доступна в обработчике событий сохранения – adward
Вам необходимо переопределить метод CreateChildControls. Ответ отредактирован, чтобы привести пример. –
Работает ли метод CreateChildControls? –